Ajax同步和异步问题浅析及解决方法
程序员文章站
2022-03-31 14:07:38
通过ajax向后台发送和接收数据时,常常会出现同步异步问题。由于ajax是默认异步加载的,但有时候需要同步或者同步的效果,有以下两种解决方案。
方案一:将某些方法放在回调...
通过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同步和异步问题浅析,希望对大家有所帮助
上一篇: Android实现音乐播放器锁屏页