Ajax的方法是异步的,有时候会出现ajax还没返回数据就执行其他函数的情况,这样会出现很多莫名奇妙的问题,以下举出两个例子,一个是错误的,一个是正确的。
第一个是错误的:
Code =’’; $.post(checkUrl, function(data){ code = data; }); Alert(code);
第二个是正确的:
//-----------------------------ajax异步验证!!!!!!!!!!!!!!!!---------------------------(核心) Code = ‘’; function yibu()//ajax是异步的,异步这个概念要好好理解,ajax相对于其他执行来说是异步的,也就是说不会按照一般的从文件开头顺序执行到结尾的,会另外开多一个进程,故会有----延迟---! { Alert(code); } $.post(checkUrl, function(data){ code = data; yibu();});//异步执行
错误原因的分析:
例子中的错误主要是没有理解到ajax的异步概念,以为还是会按照程序的结构一步一步的执行下来。
其实,真正的执行顺序并不是这样的,真正的执行顺序是当执行到$.post()函数时会向后台发送请求,发送完毕后立刻执行下面的alert(code)函数,并不会等待后台的数据到来后才去执行。而例子二是要等待后台数据返回才会去执行alert(code)函数的。所以第一个例子弹出的警告框是空的,第二个例子弹出的警告框是返回的后台数据。
因此,以后要特别注意ajax的异步性!