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&&currentPage!=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&&currentPage!=1){

// currentPage = currentPage - 1;

// }

// var para = {

// mypara :currentPage,

// startPage : currentPage,

// };

// $('div.page-box').data('myPage').setOptions({data: para});

// }

// });

// $.ajaxSettings.async = true;

这种方式是全局的,不是很推荐使用,因为会对其他ajax传输造成影响。

以上所述是小编给大家介绍的Ajax同步和异步问题浅析,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值