0

AutoSuggest プラグイン データ ソースに入力できるように、ユーザーの友人リストを JSON 形式で返す ASP.NET Web サービスがあります。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>

私のWebサービスに関連する部分は次のとおりです。

[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 に答える