Ajax請求中的async:false/true的作用【轉載】
阿新 • • 發佈:2018-12-20
[Ajax請求中的async:false/true的作用]
作者:https://www.cnblogs.com/mmzuo-798/p/7098979.html
前言:
昨天在做倒計時修改的時候,發現多次點選按鈕,我明明做了限制,點選多次的時候發現怎麼都會請求了兩次,然後我寫的是請求成功新增文字,結果總是會新增兩次文字,
說明ajax請求了兩次了,在網上查了下跟非同步有點關係,沒辦法,我把ajax非同步改成同步了,結果就可以了,我想要的文字也是隻會新增一行了!下面關於ajax 的 async:false/true
的作用整理下:
async. 預設是 true,即為非同步方式,\(.ajax執行後,會繼續執行ajax後面的指令碼,直到伺服器端返回資料後,觸發\)
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出現閃屏的問題。