【发布时间】: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