使用jQuery做web前端開發的人,相信對$.ajax這個方法不會陌生,我也一直在使用,可是一直沒有深究過其中每個參數的含義,比如今天要說到的 async 參數。
這個參數官方手冊上給出的解釋是:
async Boolean
Default: true
By default, all requests are sent asynchronously (i.e. this is set to true by default). If you need synchronous requests, set this option to false. Cross-domain requests and dataType: "jsonp" requests do not support synchronous operation. Note that synchronous requests may temporarily lock the browser, disabling any actions while the request is active.
在這裡,async預設的設定值為true,這種情況為非同步方式,就是說當ajax發送請求後,在等待server端返回的這個過程中,前台會繼續 執行ajax塊後面的指令碼,直到server端返回正確的結果才會去執行success,也就是說這時候執行的是兩個線程,ajax塊發出請求後一個線程 和ajax塊後面的指令碼。而當async為false時則指令碼會等帶server的響應,在server返回結果之後才會執行後面的指令碼,在資料返回之前等於javascript指令碼是掛起的。
這個其實不難理解,不過如果和$(document).ajaxStart()以及$(document).ajaxStop()結合起來使用,兩者的差別就大了,async為true時預設會觸發$(document).ajaxStart()和$(document).ajaxStop(),也就是說當ajax請求為非同步請求時,我們綁定在元素上的ajaxStart和ajaxStop才會起效果,反之,當async為false即ajax為同步請求時,這兩個方法以及相關的ajaxComplete等都會失效。
轉:http://hmw.iteye.com/blog/1161724