之前做項目時候,用到一個表格控件,它的數據是異步加載的,我在這個表格綁定數據的函數下面友做了一些業務處理,運行頁面的時候,用浏覽器在我寫業務處理那地方打上斷點跟蹤,它確實執行了,可以最後顯示的時候,它的處理被覆蓋了,我很納悶,當時也知道是這個表格綁定函數那出問題了,可是時間緊,它的函數是封裝的,沒有去具體跟蹤,就直接讓我的那部分業務處理延遲200ms執行,這樣就好了,這是個笨法,不過也是個有效的辦法,呵呵。
後來看了下文檔,查了些資料,其實原理應該是這樣的:
默認設置下,所有請求均為異步請求。如果需要發送同步請求,請將此選項設置為 false。注意,同步請求將鎖住浏覽器,用戶其它操作必須等待請求完成才可以執行。
復制代碼 代碼如下:
var temp;
$.ajax({
async: false,
type : "POST",
url : defaultPostData.url,
dataType : 'json',
success : function(data) {
temp=data;
}
});
alert(temp);
這個ajax請求則為同步請求,在沒有返回值之前,alert(temp)是不會執行的。
如果async設置為:true,則不會等待ajax請求返回的結果,會直接執行ajax後面的語句。