2010-12-19 5 views
0

사용자의 친구 목록을 JSON 형식으로 반환하여 AutoSuggest 플러그인 데이터 소스를 채울 수있는 ASP.NET 웹 서비스가 있습니다. 저는 ASP.NET 4.0과 jQuery 1.4.4를 사용했습니다. autoSuggest 메서드를 호출하려고하면 다음 코드가 작동하지 않는 것 같습니다. startText 값을 텍스트 상자에 적용하지만 데이터 소스를 채우지는 않습니다.jQuery AutoSuggest Plugin에 ASP.NET 웹 서비스 결과 전달

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

여기 내 웹 서비스 관련 부분 :

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

여기 내 텍스트 상자 컨트롤의 내가 자동 제안 플러그인에 대한 데이터 소스를 채우는 방법에

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

어떤 제안 내 웹 서비스에서? 다음은 개발자 페이지에 대한 링크입니다. http://code.drewwilson.com/entry/autosuggest-jquery-plugin

답변

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을 렌더링 할 수있는 다른 방법이있을 수 있지만, 당분간은 사용할 수 있습니다.

+0

HttpHandler를 사용하는 것이 좋습니다. 하지만 ASMX 서비스는 XML에만 국한되지 않습니다. http://encosia.com/2010/03/03/asmx-and-json-common-mistakes-and-misconceptions/ –