juqery中ajax同步或异步的区别

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);

 

本文纯属我的理解回调函数

相关文章
相关标签/搜索