此篇的詳細篇html
//webForm中使用異步就會用到通常處理程序,前臺調用通常處理程序這個頁面去執行裏面的方法java
using System.Web.Script.Serialization; web
Newtonsoft.Json.dll 須要本身下載這個dll,下面的Newtonsoft.Json.JsonConvert.SerializeObject才能使用,省市區三級聯動裏面有這個dll.ajax
//後臺 通常處理程序json
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
,則全部的請求均爲同步請求,在沒有返回值以前,同步請求將鎖住瀏覽器,用戶其它操做必須等待請求完成才能夠執行。
下面查看一個示例:app
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部分,即爲異步)async
同步則會等待ajax執行,所有執行完再執行後面的語句,就跟後臺程序同樣,從上到下一條條的語句執行。