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
댓글
댓글 쓰기