Jquery UI自动完成和Web服务

时间:2011-12-22 09:16:38

标签: javascript jquery asp.net ajax autocomplete

我有一个类clsArtistList的ASP文本框放在usercontrol

<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; }        
}

但代码不起作用。每次我输入时,我都会收到一条消息警告内部服务器错误

提前谢谢你。我需要你的帮助

2 个答案:

答案 0 :(得分:0)

如果您收到服务器错误消息,我会认为问题不在javascript中,而是在服务器上的某处。

您是否尝试调试ASP Web服务代码?

答案 1 :(得分:0)

我认为问题可能是您设置网址的价值。

尝试从通话中删除“..”

$.ajax({ 
         url: "/ArtistWS.asmx/GetAllArtists",