2010-12-19 8 views
0

私は、ユーザーのフレンドリストをJSON形式で返して、AutoSuggestプラグインのデータソースにデータを入れるASP.NET Webサービスを持っています。私はASP.NET 4.0とjQuery 1.4.4を使用しています。 autoSuggestメソッドを呼び出そうとすると、次のコードは動作していないようです。 startText値はテキストボックスに適用されますが、データソースには挿入されません。ここでjQuery AutoSuggestプラグインにASP.NET Webサービスの結果を渡す

$(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); 
} 

私はのAutoSuggestプラグインのデータソースを移入する方法上の任意の提案私のWebサービスから? ここに、開発者のページへのリンクがあります。http://code.drewwilson.com/entry/autosuggest-jquery-plugin

答えて

0

もう少し調査した結果、ASP .NET WebServicesはXMLで囲まれずにデータを返さないことがわかりました。ジェネリックハンドラとハンドラを使ってJSONをレンダリングすることにしました。私はJSONをエンコードするために、私の既存のコードを使用して、このようにJSONをレンダリング:私は私のハンドラのprocessRequestメソッドに上記のコードを入れて、すべてが今うまく機能

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

。 JSONをレンダリングする方法は他にもありますが、当面有効です。

+0

HttpHandlerはこれに適しています。しかし、ASMXサービスは確かにXMLに限定されていません:http://encosia.com/2010/03/03/asmx-and-json-common-mistakes-and-misconceptions/ –

関連する問題