这里讲解一下ajax同步和异步的差异, 先看2段代码:
代码一:
function PostAsynToServer(Url,Param){
var obj;
if(window.ActiveXObject)
{
obj=new ActiveXObject('Microsoft.XMLHTTP');
}
else if(window.XMLHttpRequest)
{
obj=new XMLHttpRequest();
}
obj.open('POST',Url,true);
obj.send(Param);
var strReturn = obj.responseText;
alert(1);
}
PostAsynToServer(url, null);
alert(2);
代码二:
function postToServer(Url,Param){
var obj;
if(window.ActiveXObject)
{
obj=new ActiveXObject('Microsoft.XMLHTTP');
}
else if(window.XMLHttpRequest)
{
obj=new XMLHttpRequest();
}
obj.open('POST',Url,false);
obj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
obj.send(Param);
var strReturn=obj.responseText;
alert(1);
}
postToServer(url, null);
alert(2);
同步和异步的差异如下:
obj.open('POST',Url,true); // ajax异步
obj.open('POST',Url,false); // ajax同步
对于代码一,为异步的ajax请求,执行结果为:先执行alert(2)再执行alert(1), 异步的意思就是说一旦obj.open请求一发出,前端不去等待它的响应便执行后面的代码,所以alert(2)先执行了,然后当响应response到达以后才执行alert(1);
对于代码二,为同步的ajax请求,执行结果为:先执行alert(1)再执行alert(2), 同步的意思就是说一旦obj.open请求一发出,前端就去等待它的响应,响应完成以后,alert(1)先执行了,然后alert(2);