WebService 내 DataTable 이용하여 로직 구현 후, JQuery로 데이터 가져오는 방법
페이지 코드
WebService 코드JQuery Demo Page
using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web; using System.Web.Script.Serialization; using System.Web.Script.Services; using System.Web.Services; namespace TEST.WS { ///여기서 주의 할 점../// UserInfoWS의 요약 설명입니다. /// [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // ASP.NET AJAX를 사용하여 스크립트에서 이 웹 서비스를 호출하려면 다음 줄의 주석 처리를 제거합니다. [System.Web.Script.Services.ScriptService] public class UserInfoWS : System.Web.Services.WebService { [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public string GetUserInfo(string id) { DataTable dtUserInfo = new DataTable("UserInfo"); dtUserInfo.Columns.Add("FirstName", typeof(string)); dtUserInfo.Columns.Add("LastName", typeof(string)); dtUserInfo.Columns.Add("Age", typeof(string)); dtUserInfo.Columns.Add("ID", typeof(string)); DataRow drUserInfo = dtUserInfo.NewRow(); drUserInfo["FirstName"] = "길동"; drUserInfo["LastName"] = "홍"; drUserInfo["Age"] = "29"; drUserInfo["ID"] = id; dtUserInfo.Rows.Add(drUserInfo); JavaScriptSerializer serializer = new JavaScriptSerializer(); ListuserInfos = new List (); UserInfo userInfo = null; foreach (DataRow dr in dtUserInfo.Rows) { userInfo = new UserInfo(); userInfo.FirstName = dr["FirstName"].ToString(); userInfo.LastName = dr["LastName"].ToString(); userInfo.Age = dr["Age"].ToString(); userInfo.ID = dr["ID"].ToString(); userInfos.Add(userInfo); } return serializer.Serialize(userInfos); } public class UserInfo { public string FirstName { get; set; } public string LastName { get; set; } public string Age { get; set; } public string ID { get; set; } } } }
- WebMethod 내 JavaScriptSerializer 클래스를 통하여 DataTable 개체를 JSON 문자열로 변환하여 String으로 리턴하여야 함.
- Object 타입의 개체를 넘겨주어야 하므로, 위 소스에서는 별도의 클래스를 정의하여 개체로 넘김. - 위 JSON 문자열로 처리 했다고 해서.. JQuery ajax 내에서 return.d 로만 처리하면 속성값을 찾지 못함.
success: function (result) {
data = $.parseJSON(result.d);
$.each(data, function (i, item) {
//위처럼 선언 안하고, item.FirstName 속성 값을 가져오지 못함.
}
};
'Web Platform' 카테고리의 다른 글
Script 내에서 XML Node Value값 조회하기 (1) | 2011.08.10 |
---|---|
[펌]jQuery in Action 정리 9장 - 강력하고 실용적이며 유명한 플러그인 (0) | 2011.02.15 |
[펌]jQuery in Action 정리 8장 - Ajax를 이용하여 서버와 대화하기 (0) | 2011.02.15 |
[펌]jQuery in Action 정리 7장 - 사용자 정의 플러그인으로 jQuery 확장하기 (0) | 2011.02.15 |
[펌]jQuery in Action 정리 6장 - jQuery 유틸리티 함수 (0) | 2011.02.15 |