小編給大家分享一下Ajax中同步和異步的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
10年積累的成都做網(wǎng)站、網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有扎蘭屯免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。通過ajax向后臺(tái)發(fā)送和接收數(shù)據(jù)時(shí),常常會(huì)出現(xiàn)同步異步問題。由于ajax是默認(rèn)異步加載的,但有時(shí)候需要同步或者同步的效果,有以下兩種解決方案。
方案一:將某些方法放在回調(diào)函數(shù)中執(zhí)行,即,等到從后臺(tái)返回成功后再執(zhí)行。
例:
$.getJSON("/data-access/sens-config/IPandPortSel",{},function(resp){ if(resp.code==0){ $.each(resp.data,function(i,obj){ option_net_type += addOption(obj); }); $("#edit-addr_id").append(option_net_type); addr_idOld = $('#edit-addr_id').val(addr_id); } });
紅色的部分必須在數(shù)據(jù)返回成功后執(zhí)行,如果放在if(resp.code==0){}外面((但放在$.getJSON();后面)會(huì)存在數(shù)據(jù)還沒從后臺(tái)返回,就已經(jīng)執(zhí)行到紅色部分代碼了。
方法二:利用標(biāo)準(zhǔn)ajax傳遞方式
$.ajax({ type : "post", url : "/data-access/manufacturer/deleteBranch", data : data, async : false,//取消異步 success : function(resp){ if(resp.code==0){ if(ids.length>=currentListNum&¤tPage!=1){ currentPage = currentPage - 1; } var para = { mypara :currentPage, startPage : currentPage, }; $('div.page-box').data('myPage').setOptions({data: para}); } } });
注意:這種方式只是局部的同步傳輸方式,不會(huì)對(duì)其他傳輸造成影響,是比較安全和推薦的一種
方式。
還存在另外一種方式:
// $.ajaxSettings.async = false; // $.getJSON("/data-access/ip-config/deleteBranch",data,function(resp){ // if(resp.code==0){ // if(ids.length>=currentListNum&¤tPage!=1){ // currentPage = currentPage - 1; // } // var para = { // mypara :currentPage, // startPage : currentPage, // }; // $('div.page-box').data('myPage').setOptions({data: para}); // } // }); // $.ajaxSettings.async = true;
這種方式是全局的,不是很推薦使用,因?yàn)闀?huì)對(duì)其他ajax傳輸造成影響。
以上是“Ajax中同步和異步的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!