DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> AJAX入門 >> AJAX基礎知識 >> Ajax同步和異步問題淺析及解決方法
Ajax同步和異步問題淺析及解決方法
編輯:AJAX基礎知識      日期:2017/4/13 9:51:46

通過ajax向後台發送和接收數據時,常常會出現同步異步問題。由於ajax是默認異步加載的,但有時候需要同步或者同步的效果,有以下兩種解決方案。

方案一:將某些方法放在回調函數中執行,即,等到從後台返回成功後再執行。

例:

$.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);
}
});

紅色的部分必須在數據返回成功後執行,如果放在if(resp.code==0){}外面((但放在$.getJSON();後面)會存在數據還沒從後台返回,就已經執行到紅色部分代碼了。

 方法二:利用標准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});
}
  } 
 });

注意:這種方式只是局部的同步傳輸方式,不會對其他傳輸造成影響,是比較安全和推薦的一種

方式。

還存在另外一種方式:

// $.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;

這種方式是全局的,不是很推薦使用,因為會對其他ajax傳輸造成影響。

以上所述是小編給大家介紹的Ajax同步和異步問題淺析,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved