【问题标题】:JQuery autocomplete not working with asp.net webserviceJQuery自动完成不适用于asp.net webservice
【发布时间】:2011-03-24 16:37:36
【问题描述】:

我有这个代码:

$('#' + textboxID).autocomplete({ delay: delay, source: ["cats", "dogs"] });

效果很好。

我想使用网络服务:

$('#' + textboxID).autocomplete({ delay: delay, source: webserviceURL});

这不起作用。我的网络服务 URL 是 /blah/blah.asmx/myMethod

webservice定义是:

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public List<string> myMethod(string term)
{
       // Logic here, return list of strings
}

该方法永远不会被调用。谁能指出我正确的方向?我在同一个 .asmx 中有其他 Web 服务,它们可以与其他控件一起正常工作(其他控件使用 $.ajax 来调用它们)。

编辑:越来越近,我现在收到一个 500 错误,提示 URL 意外以“/myMethod”结尾的请求格式无法识别。

我认为它处理我的网址不太正确...

【问题讨论】:

  • 您是否使用过 fiddler 之类的工具来查看浏览器发送/接收的内容?可以在浏览器地址栏中手动打webservice地址吗?
  • 我不知道为什么我不使用 fiddler 开始,问题是它像 http 请求一样调用我的 web 服务,看起来 ?term=blah 会做更多的调查!
  • 听起来您需要设置 ajax 选项。我想您需要将内容类型设置为 JSON 并确保它是 Post 而不是 Get。此外,请确保您取消了 Web 服务类开头附近的代码行的注释,该代码行允许将类公开给客户端脚本。

标签: jquery asp.net web-services jquery-ui


【解决方案1】:

这是一个 SO 线程,其中包含将其与 Asp.net 网络服务一起使用的解决方案:

jQuery AutoComplete (jQuery UI 1.8rc3) with ASP.NET web service

【讨论】:

  • 看起来不错,但 $.ajax 的 webservice url 参数与您提供的自动完成参数之间存在某种差异,我不知道为什么它会以不同的方式对待它们,但我所有的 $.ajax调用就像上面的例子一样工作正常
  • @SLC - url 看起来和你使用的一样。我认为您需要正确配置 $.ajax 选项,并可能将&lt;webServices&gt; &lt;protocols&gt; &lt;add name="HttpGet"/&gt; &lt;add name="HttpPost"/&gt; &lt;/protocols&gt; &lt;/webServices&gt; 添加到您的 web.config 中。见forums.asp.net/t/988377.aspx/2/…
【解决方案2】:

解决了,关键在这个问题:

How do I set JQuery Autocomplete to POST instead of GET?

我将$.ajaxSetup( { type: "post" } ); 放在我的 .autocomplete 行之前,它解决了它。最烦人的是他们没有把它作为一个选项!

【讨论】:

    猜你喜欢
    • 2017-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 2020-05-05
    • 2016-03-21
    • 2015-08-05
    相关资源
    最近更新 更多