通過ajax向后臺發(fā)送和接收數(shù)據(jù)時,常常會出現(xiàn)同步異步問題。由于ajax是默認異步加載的,但有時候需要同步或者同步的效果,有以下兩種解決方案。
方案一:將某些方法放在回調(diào)函數(shù)中執(zhí)行,即,等到從后臺返回成功后再執(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();后面)會存在數(shù)據(jù)還沒從后臺返回,就已經(jīng)執(zhí)行到紅色部分代碼了。
方法二:利用標準ajax傳遞方式
$.ajax({
type : "post",
url : "/data-access/manufacturer/deleteBranch",
data : data,
async : false,//取消異步
success : function(resp){
if(resp.code==0){
if(ids.length>=currentListNumcurrentPage!=1){
currentPage = currentPage - 1;
}
var para = {
mypara :currentPage,
startPage : currentPage,
};
$('div.page-box').data('myPage').setOptions({data: para});
}
}
});
注意:這種方式只是局部的同步傳輸方式,不會對其他傳輸造成影響,是比較安全和推薦的一種
方式。
還存在另外一種方式:
// $.ajaxSettings.async = false;
// $.getJSON("/data-access/ip-config/deleteBranch",data,function(resp){
// if(resp.code==0){
// if(ids.length>=currentListNumcurrentPage!=1){
// currentPage = currentPage - 1;
// }
// var para = {
// mypara :currentPage,
// startPage : currentPage,
// };
// $('div.page-box').data('myPage').setOptions({data: para});
// }
// });
// $.ajaxSettings.async = true;
這種方式是全局的,不是很推薦使用,因為會對其他ajax傳輸造成影響。
以上所述是小編給大家介紹的Ajax同步和異步問題淺析,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!
您可能感興趣的文章:- jquery的ajax同步和異步的理解及示例
- Jquery Ajax解析XML數(shù)據(jù)(同步及異步調(diào)用)簡單實例
- jquery ajax屬性async(同步異步)示例
- jquery ajax同步異步的執(zhí)行最終解決方案
- Ajax請求中的異步與同步,需要注意的地方說明
- jquery ajax 同步異步的執(zhí)行 return值不能取得的解決方案
- ajax 同步請求和異步請求的差異分析
- AJAX下的請求方式以及同步異步的區(qū)別小結(jié)
- jquery ajax 同步異步的執(zhí)行示例代碼