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

 此篇的详细篇

//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[0])); //返回一张省的表格 

//前台

 $.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执行,全部执行完再执行后面的语句,就跟后台程序一样,从上到下一条条的语句执行。

原文地址:https://www.cnblogs.com/Sea1ee/p/6585857.html