ajax的同步 异步 jquery同步...
时间:2010-08-11 来源:willielee
同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
看下边的js function
function ajaxTest(){
var loginId="will";
var url="queryUserByLoginId.do"
//ajax 代码
var data;
$.ajax({
type: "POST",
url: url,
data:{loginId:loginId},
success: function(msg){
alert("msg: " +msg);
data=msg;
},
error: function(XMLHttpRequest, textStatus, thrownError){
return;
}
});
alert("last");
return data;
}
如果其它函数调用这个函数的时候我们会发现先alert("last");之后再 alert("msg: " +msg);
不是顺序执行的,这是因为jquery ajax默认的是异步的不等ajax执行完就继续执行其余代码
这样的话返回值打他可能永远就是空,因为还没等ajax调用的后台完成,就已经返回data了。
那么如果我们想按顺序执行怎么办,这需要发送同步请求,
请添加async:false。添加async:false.即修改为同步了,什么意思?(按同事解释就是,这是等这个ajax有了返回值后才会执行下面的js。一语道破天机,怪不得以前很多ajax调用里面的赋值都不起作用)。这样等ajax给bol赋值完毕后,才执行下面的js部分。而刚刚异步的话,还没有来得及赋值,就已经return了。
注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。