WebService 내 DataTable 이용하여 로직 구현 후, JQuery로 데이터 가져오는 방법
페이지 코드
 

JQuery Demo Page



이름 나이
WebService 코드
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();
            List userInfos = 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; }
        }
    }
}
여기서 주의 할 점..

  1. WebMethod 내 JavaScriptSerializer 클래스를 통하여 DataTable 개체를 JSON 문자열로 변환하여 String으로 리턴하여야 함.
    -  
      Object 타입의 개체를 넘겨주어야 하므로, 위 소스에서는 별도의 클래스를 정의하여 개체로 넘김.
  2. 위 JSON 문자열로 처리 했다고 해서.. JQuery ajax 내에서 return.d 로만 처리하면 속성값을 찾지 못함.

    success: function (result) {
          data = $.parseJSON(result.d);
          
    $.each(data, function (i, item) {
                   //위처럼 선언 안하고, item.FirstName 속성 값을 가져오지 못함.
           }
    }; 

+ Recent posts