您好,登錄后才能下訂單哦!
關于jquery同步和異步請求問題總結
問題
這幾天做項目的時候,寫腳本遇到一個問題,就是jquery異步請求和同步請求執行順序不按代碼順序執行而是最后執行導致添加數據報錯,添加到空值,這怎么忍,于是我去查找jquery api,終于知道了原來jquery默認異步請求,防止數據卡死,終于讓我找到了這貨 async,當async: true 時,ajax請求是異步的。當async : true 時,就是同步的,但是我又有個問題,怎么設置,這個在哪設置,用$.ajax去寫這個操作,不,不太麻煩了,到底怎么解決
解決方案
方案一
用$.ajax方法,可以設置請求方法 , 記得設置 async 為 false 就是同步了,下面是代碼案例
$.ajax({ type : "GET",//請求方式 url : '/address/getParentId',//請求url data : {parentId : parentId},//請求參數 dataType : 'json',//返回數據類型 async : false, //設為false就是同步請求 cache : false,//是否緩存,默認true success : function (addressList) {//成功事件 if(addressList && addressList.length > 0){ $.each(addressList, function(index, item){ array.push({ id : item.id, name : item.address, }); }); } }, error : function (XMLHttpRequest, textStatus, errorThrown) {//失敗事件 // 通常情況下textStatus和errorThown只有其中一個有值 this; // the options for this ajax request } });
方案二
利用 $.ajaxSetup 來設置請求屬性
//設置同步 $.ajaxSetup({ async : false }); var array = []; $.get('/address/getParentId',{parentId : parentId},function(addressList){ //循環添加數據 $.each(addressList, function(index, item){ array.push({ id : item.id, name : item.address, }); }); });
這樣的話就ok了,請求的時候是同步了
結語
新人第一篇博文,不足之處請指出,我會改進的,謝謝
參考:JQuery.Ajax之錯誤調試幫助信息
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。