$.ajax({
type:"post",
url:"http://172.16.41.91:8080/FcsServletSSM/users/register",
data:$('#user_resigter').serialize(),
dataType:"json",
async:false, //false为同步,true为异步
success:function(data) {
alert(data.type);
console.log(data.id);
}
});
async: false,(默认是true);
如上:false为同步,这个Ajax请求将整个浏览器锁死,只有url请求中后台的方法执行结束后,才可以执行其它操作。
当async: true 时,ajax请求是异步的。但是其中有个问题:ajax请求和其后面的操作是异步执行的,那么当后台方法还未执行完,就可能已经执行了 ajax请求后面的操作
然而,data这个数据是在ajax请求success后才赋值的,结果,输出时会为空。
所以导致一种回调函数没有被调用的假象。
比如:后台要做一些耗时的操作就会导致这种情况。
解决方法:通过设置 async:false 把 ajax 请求方法改成同步。
所以导致一种回调函数没有被调用的假象。
比如:后台要做一些耗时的操作就会导致这种情况。
解决方法:通过设置 async:false 把 ajax 请求方法改成同步。
本文详细解析了Ajax请求中的同步与异步的区别,并通过示例代码解释了如何使用同步方式解决异步请求可能导致的数据未准备好问题。
644

被折叠的 条评论
为什么被折叠?



