query中ajax请求默认的是异步请求,就是当发送这个ajax请求后,在等待server端返回结果的时候,前台会继续执行ajax后面的脚本,当server端返回数据到时候,才去执行success这个回调函数ajax
同步请求:同步请求就是当发送一个ajax请求的时候,在等待server端返回结果的时候,程序会一直等待server端返回结果,ajax后面的代码就不会执行,当server端返回结果以后,ajax后面的代码就会执行:json
Ajax中有一个属性async,若是再代码中不写明async的属性时,ajax默认的是异步请求,若是须要使用同步请求那么加上async:false便可服务器
案例:异步
在作ajax无刷新验证的时候,如何获取server返回的数据,以供其余地方使用了(使数据全局化),async
var result; $.ajax({ 'type':'POST', 'url':"__CONTROLLER__/getUser", 'dataType':'json', 'data':_data, 'success':function(json){ result = json; }, 'error':function(msg){ } }); console.log(result);
这个时候使用的是默认异步请求,因此当发送ajax请求的时候,console.log(result);这段代码同时也会执行,执行的结果会是空null,由于这个时候,执行ajax的后,在等待服务器端返回数据的期间,console.log(result);也在执行,success里面的回调函数体并无执行,这个时候console.log(result);的结果就是空了函数
解决这个问题:url
把这个ajax请求改为同步,在属性中加一个'async': falseserver
console.log(result);就能够打印出ajax执行成功返回的数据了get
var result; $.ajax({ 'type':'POST', 'url':"__CONTROLLER__/getUser", 'dataType':'json', 'data':_data, 'async': false, 'success':function(json){ result = json; }, 'error':function(msg){ } }); console.log(result);
本文纯属我的理解回调函数