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

 

本文純屬我的理解回調函數

相關文章
相關標籤/搜索