0

我有一个 ASP.NET Web 服务,它以 JSON 形式返回用户的朋友列表,以便它可以填充 AutoSuggest 插件数据源。我正在使用 ASP.NET 4.0 和 jQuery 1.4.4 缩小版。当我尝试调用 autoSuggest 方法时,以下代码似乎不起作用。它将 startText 值应用于我的文本框,但它不填充数据源。

$(document).ready(function () {
        $("input[type=text]").autoSuggest("GetFriends.asmx/GetFriendsList", { minChars: 2, matchCase: false, startText: "Search Username" });
    });  

这是我的文本框控件:

<asp:TextBox ID="tbSearch" runat="server"></asp:TextBox>

这是我的网络服务的相关部分:

[WebMethod]
public string GetFriendsList()
{
    DataTable dt = GetFriends();
    List<Friend> friends = new List<Friend>();
    string[] items = new string[dt.Rows.Count];

    for (int i=0; i< dt.Rows.Count; i++)
    {
        DataRow dr = dt.Rows[i];
        Friend friend = new Friend();
        friend.value= dr["UserId"].ToString();
        friend.name= dr["UserName"].ToString();
        friends.Add(friend);
    }
    return JsonConvert.SerializeObject(friends, Formatting.Indented);
}

关于如何从我的 Web 服务填充 AutoSuggest 插件的数据源的任何建议?这是开发人员页面的链接: http: //code.drewwilson.com/entry/autosuggest-jquery-plugin

4

1 回答 1

0

在做了更多研究之后,我发现 ASP .NET WebServices 不首先包含在 XML 中就不会返回数据。我决定使用通用处理程序并使用该处理程序呈现 JSON。我使用我现有的代码对 JSON 进行编码,然后像这样渲染 JSON:

    string str = Newtonsoft.Json.JsonConvert.SerializeObject(data, Newtonsoft.Json.Formatting.Indented);
    context.Response.ContentType = "application/json";
    context.Response.Write(str);

我将上面的代码放在我的处理程序的 ProcessRequest 方法中,现在一切正常。可能还有其他方法可以呈现可用的 JSON,但目前这种方法有效。

于 2010-12-23T06:33:01.050 回答