ajax异步的问题,(主要解决有时候前台打断点和不打断点结果不一样的问题,一般情况下是存在异步的问题)

时间:2022-07-13 04:38:35

一,代码

$(function() {
$(".btn-submit").click(function() {
if(!checkData()){
return;
}
var url = '${rc.contextPath}/wxFfanApply.htm?method=save';
var param = $("#submitForm").serialize();
var aa=$.ajax({
url: url,
type: 'POST',
dataType: 'json',
data: param,
async: true,
success: function(data){
if ("000" == data.code) {
alert("保存成功");
var url = '${rc.contextPath}/wxFfanApply.htm?method=preToMain';
document.getElementById('submitForm').action = url;
document.getElementById('submitForm').submit();
} else {
alert("保存出现异常,请重试");
}
}
});
console.log(aa.responseText);
alert("66666"+aa.responseText);//主要是用于后台返回的json 格式的数据。
});
});
</script>

二,分析

2.1,异步

async: true,

这时候会出现

ajax异步的问题,(主要解决有时候前台打断点和不打断点结果不一样的问题,一般情况下是存在异步的问题)

undefined的结果因为这时候这时候是因为,设置的是异步的代码不等服务器返回就开始往下执行了。所以没有获得它的值。然后在弹出来

ajax异步的问题,(主要解决有时候前台打断点和不打断点结果不一样的问题,一般情况下是存在异步的问题)

2.2,同步:

async: false,

这时候会先弹出来

ajax异步的问题,(主要解决有时候前台打断点和不打断点结果不一样的问题,一般情况下是存在异步的问题)

然后在弹出来

ajax异步的问题,(主要解决有时候前台打断点和不打断点结果不一样的问题,一般情况下是存在异步的问题)

这是一位同步的话会一步步的操作。

2.3,断点问题,网上来的

ajax异步的问题,(主要解决有时候前台打断点和不打断点结果不一样的问题,一般情况下是存在异步的问题)

如图,有断点时能够得到变量json的值:

但取消断点之后怎么json就是undefined了?

调用$.ajax的时候,没有设置是否同步,一般情况下是异步,也就是说数据还没有返回,代码就已经往下面走了,断点的话默认是同步的,决解:
$.ajax( {
async : false, 增加这一个设置!!
url : url,
data : params ,
success : function (result) { XXX },
error:function(){ return { XXX }
});

2.4,什么时候用同步什么时候用异步

ajax就是局部刷新技术,在不加载整个页面的情况下,提高客户体验度。试想,什么时候用户才会在浏览器停下手下的事情,来等待服务器的回应,只能是服务器回应的速度很快,也就是说,客户端向服务器提交的数据量很小。这时候用同步,反这,其他时候用异步。