【发布时间】:2011-12-22 09:16:38
【问题描述】:
我有一个 clsArtistList 类的 ASP 文本框放置在用户控件中
<asp:TextBox CssClass="clsArtistList" ID="txtArtistList" runat="server"></asp:TextBox>
然后我使用 jquery-ui-1.8.16 为我的文本框创建自动完成功能。我从http://www.dotnetcurry.com/ShowArticle.aspx?ID=515 复制了它,但我真的不知道它是如何工作的
$(".clsArtistList").autocomplete({
source: function(request, response) {
$.ajax({
url: "../ArtistWS.asmx/GetAllArtists",
data: "{ 'ARTIST_NAME': '" + request.term + "' }",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
dataFilter: function(data) { return data; },
success: function(data) {
response($.map(data.d, function(item) {
return {
value: item.ARTIST_NAME
}
}))
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
},
minLength: 1
});
这是我的网络服务
[WebMethod]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
public List<Artist> GetAllArtists(string ARTIST_NAME) {
ArtistCollection coll = ArtistManager.GetAllArtists();
return coll.FindAll(a => a.ARTIST_NAME.ToLower().StartsWith(ARTIST_NAME.ToLower()));
}
为了您的兴趣,我的 ArtistCollection 是一个艺术家列表。 Artist 类如下所示:
public class Artist {
public string ARTIST_ID { get; set; }
public string ARTIST_NAME { get; set; }
public string ARTIST_NATIONALITY { get; set; }
public string ARTIST_INFO { get; set; }
}
但是代码不起作用。每次我输入时,我都会收到一条消息警报内部服务器错误
提前谢谢你。我需要你的帮助
【问题讨论】:
-
网络服务是否正在运行?您是否尝试过将浏览器指向 Web 服务并查看从中得到了什么?
-
我试过了,结果还可以。但它是 XML 格式的。文档说结果必须是 JSON。你知道如何返回 JSON 吗?
-
@HoàngLâmHuỳnh:您可以使用 XML,但您必须在客户端解析结果。 XML 是什么样的?
标签: javascript jquery asp.net ajax autocomplete