【发布时间】:2009-07-22 20:41:19
【问题描述】:
我正在尝试在 ASP.NET 3.5 Web 窗体应用程序中将官方 jQuery autocomplete plugin 与 ASMX Web 服务一起使用。如果我理解正确的话,自动完成插件只能使用 HTTP GET 来调用服务(带有两个查询字符串参数:q 和 limit)。我想出了如何使 Web 服务响应 HTTP GET 调用,但我不知道如何使它返回 JSON 数据(即使当我使用带有 type='POST 的 jQuery $.ajax 调用它时服务返回 JSON 数据',当从自动完成插件调用时,它总是返回 XML)。下面是一些sn-ps的代码:
网络服务:
[ScriptService]
[WebService(Namespace = "http://tempuri.org/")]
public class UserWS: WebService
{
[WebMethod]
[ScriptMethod(UseHttpGet=true, ResponseFormat=ResponseFormat.Json)]
public List<UserDisplayInfo> GetUsers
(
string q,
int limit
)
{
List<UserDisplayInfo>users = GetUsers(q, limit);
return users.ToList();
}
}
网页:
$("#test").autocomplete(
"./Services/UserWS.asmx/GetUsers",
{
dataType: 'json',
type: 'POST', // this setting is ignored
contentType: 'application/json;charset=utf-8',
parse: function(data)
{
//...
}
});
如果这不可能,我想知道什么是更好的选择:
- 修复自动完成插件以使用 HTTP POST 和 JSON 数据而不是 GET 和查询字符串参数;
- 使用不同的自动补全插件(我看了几个,但目前官方插件推荐最多,我不确定其他插件是否支持 HTTP POST);
- ASMX Web 服务的替代方案,例如 WCF Web 服务(我不想使用 WCF,因为 ASMX Web 服务实现起来更简单——没有 web.config 更改、没有合同、没有接口——它给了我我需要的一切);
- 别的东西。
我在 StackOverflow 上发现了几个类似的问题,但我没有找到适合我的答案。有什么(好的)想法吗?
【问题讨论】:
-
我在插件文档中找不到数据类型、类型、内容类型和解析选项:docs.jquery.com/Plugins/Autocomplete/autocomplete#toptions
-
我希望这些将被传递给 jQuery AJAX。
标签: asp.net jquery webforms autocomplete asmx