序列JSON数据和四种AJAX操作方式
GET方式获得JSON数据
$(function () { $("#btnGetJson").click(function () { var xhr; if (XMLHttpRequest) { xhr = new XMLHttpRequest(); } else { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } xhr.open("Get", "ResponseJson.ashx", true); xhr.send(); xhr.onreadystatechange = function () { //str→json if (xhr.readyState == 4) { var jsonData = $.parseJSON(xhr.responseText); alert(jsonData[0].CityName); } }; }); });
html代码:
<input type="button" id="btnGetJson" value="获取json"/>
后台代码:
//第一种:拼接字符串,这种方式比较灵活
System.Collections.Generic.List<CityInfo> cities = new List<CityInfo>() { new CityInfo(){CityId = 1,CityName = "潍坊"}, new CityInfo(){CityId = 2,CityName = "青岛"}, new CityInfo(){CityId = 3,CityName = "济南"}, new CityInfo(){CityId = 4,CityName = "东营"}, new CityInfo(){CityId = 5,CityName = "烟台"} }; //[{CityId:1,CityName:"潍坊"},{},{}] //第一种:拼接字符串,这种方式比较灵活 System.Text.StringBuilder sb = new StringBuilder(); sb.Append("["); foreach (var cityInfo in cities) { sb.Append("{"); sb.AppendFormat("\"CityId\":\"{0}\",\"CityName\":\"{1}\"", cityInfo.CityId, cityInfo.CityName); sb.Append("},"); } string str = sb.ToString().TrimEnd(','); str += "]"; context.Response.Write(str);
//第二种序列化的方式
//如果对象之间有循环依赖,则会出现问题 //将对象序列化成json格式: System.Web.Script.Serialization.JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer(); string json = javaScriptSerializer.Serialize(cities); context.Response.Write(json);
前台4种AJAX请求的方式:
$(function () { $("#btnGetJson").click(function () { $.getJSON("ResponseJson.ashx", "a=3&b=4", function (data) { alert(data[1].CityName); }); }); $("#btnJQGet").click(function () { $.get("ResponseJson.ashx", "dd=33", function (data) { alert(data); }); }); //直接post比较方便 $("#btnJQPost").click(function () { $.post("ResponseJson.ashx", { d: 33, demo: 'shit' }, function (data) { alert(data[0].CityName); }, "json"); }); //综合性的 $("#btnAjax").click(function () { $.ajax({ url: "ResponseJson.ashx", data: "a=3&b=4", type: "Post", success: function (data) { alert(data); $("#divDemo").text(data); }, error: function () { alert("错误!"); } }); }); $("#btnLaod").click(function () { //先定位到 dom元素上,再调用load $("#divDemo").load("ResponseJson.ashx", { id: 333 }, function (data) { alert(data); }); }); }); </script> </head> <body> <input type="button" value="JQ GetJson" id="btnGetJson"/> <input type="button" value="JQ Get" id="btnJQGet"/> <input type="button" value="JQ Post" id="btnJQPost"/> <input type="button" value="JQ ajax" id="btnAjax"/> <input type="button" value="JQ load" id="btnLaod"/> <div id="divDemo"> </div> <table id="demo">
其中<input type="button" value="JQ ajax" id="btnAjax"/> 是先ALERT,再显示数据
<input type="button" value="JQ load" id="btnLaod"/>是先显示数据,再ALERT