Juery返回Json数据格式,webForm中使用

时间:2023-03-08 22:11:03

此篇的详细篇

//webForm中使用异步就会用到一般处理程序,前台调用一般处理程序这个页面去执行里面的方法

using System.Web.Script.Serialization;

Newtonsoft.Json.dll 需要自己下载这个dll,下面的Newtonsoft.Json.JsonConvert.SerializeObject才能使用,省市区三级联动里面有这个dll.

//后台   一般处理程序

JavaScriptSerializer java = new JavaScriptSerializer();  //序列化    主要返回字符串,整型等等
context.Response.ContentType = "text/plain";
BLL.Boda_Department DepartmentBLL = new BLL.Boda_Department();
DataSet ds = DepartmentBLL.GetList(" BodiesID='" + UserModel.BodiesID + "'");
java.MaxJsonLength = int.MaxValue;
context.Response.Write(Newtonsoft.Json.JsonConvert.SerializeObject(ds.Tables[])); //返回一张省的表格

//前台

 $.ajax({
type: "Post",
url: "CommunityHandler.ashx", //访问处理程序
dataType: "json", //类型
data: "", //参数
async: false, //false为同步,ture为异步(默认为true)
success: function (data) { //data就是序列化的表格
var GetData = eval(data); //转个型 GetData就是我们的表
$.each(GetData, function (i, item) {
$("#Sheng" + Id + "").append("<option value=" + item.dm + ">" + item.ct + "</option>"); //dm,ct都是表里面的字段
}); //GetData是需要循环的集合, i个数,item每一项
}
});

同步异步区别

async. 默认是true,即为异步方式,$.ajax执行后,会继续执行ajax后面的脚本,直到服务器端返回数据后,触发$.ajax里的success方法,这时候执行的是两个线程。若要将其设置为false
,则所有的请求均为同步请求,在没有返回值之前,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
下面查看一个示例:

var temp;
$.ajax({
async: false,
type : "post",
url : defaultpostdata.url,
datatype : 'json',
success : function(data) {
temp=data;
}
});
alert(temp);

这个ajax请求为同步请求,在没有返回值之前,alert(temp)是不会执行的。
如果async设置为:true,则不会等待ajax请求返回的结果,会直接执行ajax后面的语句。

总结:异步会先执行ajax后面的语句,等后面的语句执行完了,最后再来执行success方法里面的(也就是把这个程序分为两部分,执行ajax后不会等结果,相当于分了一个线程去执行ajax部分,即为异步)

同步则会等待ajax执行,全部执行完再执行后面的语句,就跟后台程序一样,从上到下一条条的语句执行。