前言:
昨天在做倒計時修改的時候,發現多次點擊按鈕,我明明做了限制,點擊多次的時候發現怎么都會請求了兩次,然后我寫的是請求成功添加文字,結果總是會添加兩次文字,
說明ajax請求了兩次了,在網上查了下跟異步有點關系,沒辦法,我把ajax異步改成同步了,結果就可以了,我想要的文字也是只會添加一行了!下面關於ajax 的 async:false/true
的作用整理下:
async. 默認是 true,即為異步方式,$.ajax執行后,會繼續執行ajax后面的腳本,直到服務器端返回數據后,觸發$.ajax里的success方法,這時候執行的是兩個線程。
async 設置為 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后面的語句。
不過上面設置同步請求的方法,有網友曾經反饋將async設成false后, 原意是想返回數據了再執行$.ajax后面的腳本, 沒想到這個地方卻導致了在火狐瀏覽器下出現閃屏(firefox 11.0),滾
動條下拉到底部觸發ajax的情況。最后只能將async:false注釋掉,也就是async為ture的情況下,成功解決了火狐瀏覽器滾動條下拉到底部觸發ajax出現閃屏的問題。
