Json / JQuery (Ajax)/ Asp.net 3가지를 연동하여 데이터 가져오기

Json / JQuery (Ajax)/ Asp.net 3가지를 연동하여 데이터 가져오기

posted by 방랑군

출처 : http://najsulman.tistory.com/591휴우~ 각고의 노력끝에 드뎌 성공~!!!

휠자가 하려고 했던 것은 다음과 같다.

1. ActiveX에서 마우스 클릭 시 이벤트를 ClientScript에 통지!!

2. 통지 받으면 Ajax로 서버딴에 DB질의를 요청

3. 서버쪽에서는 웹서비스로 DB에 질의 요청 후 받은 데이터를 JSON으로 변환

4. 기다리고 있던 ClientScript에서는 JSON으로 질의에 대한 응답을 받음

현재 설명하려고 하는 내용은 Ajax로 서버딴에 DB질의 요청 및 받은 데이터를 JSON으로 변환하는 것이에용

ClientScript에서 Ajax로 질의 요청 하는 Ajax구문

$.ajax({

type: "post",

url: "Tmp.asmx/HelloPreset",

data: "{" + CameraCode + "}",

data: "{}",

contentType: "application/json; charset=utf-8",

dataType: "json",

success: function(data){

alert('success - ' + data.d);

},

error: function(result){

alert('error - ' + result.status + ' ' + result.statusText);

}

}); $.ajax({type: "post",url: "Tmp.asmx/HelloPreset",data: "{" + CameraCode + "}",data: "{}",contentType: "application/json; charset=utf-8",dataType: "json",success: function(data){alert('success - ' + data.d);},error: function(result){alert('error - ' + result.status + ' ' + result.statusText);});

JSON으로 변환

- 웹서비스쪽에서 JSON으로 변환해줌

DataSet을 JSON으로 변환해줄 클래스 정의

namespace ICSService

{

public class DataSetConverter : JavaScriptConverter

{

public override IEnumerable SupportedTypes

{

//Define the DataTable as a supported type.

get { return new ReadOnlyCollection(new List(new Type[] { typeof(DataSet) })); }

}

public override IDictionary Serialize(object obj, JavaScriptSerializer serializer)

{

Dictionary dtDic = new Dictionary();

DataSet ds = obj as DataSet;

foreach (DataTable dt in ds.Tables)

{

// Create the representation.

Dictionary rowDic = new Dictionary();

int i = 0;

foreach (DataRow row in dt.Rows)

{

//Add each entry to the dictionary.

Dictionary colDic = new Dictionary();

foreach (DataColumn col in row.Table.Columns)

{

colDic.Add(col.ColumnName, row[col]);

}

rowDic.Add("row" + (i++).ToString(), colDic);

}

dtDic.Add(dt.TableName, rowDic);

}

return dtDic;

}

public override object Deserialize(IDictionary dictionary, Type type, JavaScriptSerializer serializer)

{

if (dictionary == null)

throw new ArgumentNullException("dictionary");

if (type == typeof(DataTable))

{

// Create the instance to deserialize into.

DataTable list = new DataTable();

// Deserialize the ListItemCollection's items.

ArrayList itemsList = (ArrayList)dictionary["Rows"];

for (int i = 0; i < itemsList.Count; i++)

list.Rows.Add(serializer.ConvertToType(itemsList[i]));

return list;

}

return null;

}

}

}

DataSetConverter 클래스의 사용

[WebMethod]

public string SelectPresetByCameraCode_Web(string[] CameraCode)

{

DataSet ds = (DataSet)XmlHelper.ExcuteXml(Server.MapPath(PRESET_XML), "SelectPresetByCameraCode_Web", CameraCode);

JavaScriptSerializer jss = new JavaScriptSerializer();

DataSetConverter dsc = new DataSetConverter();

IDictionary retVal = dsc.Serialize(ds, jss);

string result = jss.Serialize(retVal);

return result;

}

from http://hsj0511.tistory.com/255 by ccl(A) rewrite - 2020-03-06 03:55:01

댓글

이 블로그의 인기 게시물

🐱‍💻Installing IIS Components Windows 10

2017년 1월 스타트업에서 구인할때 주로 원하는 개발 기술

Creating Cascading DropDownLists in ASP.Net (연속적인 셀렉트박스...