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);
本文純屬我的理解回調函數