我有我試圖同步調用AJAX地址驗證功能,如:JQuery的AJAX同步請求的行爲
function validate_address(address, city, state, zip) {
return $.ajax({
type: 'POST',
url: '/ajax/address',
data: {
address: address,
city: city,
state: state,
zip: zip
},
dataType: "json",
cache: false,
async: false
}).responseText;
}
之前我所說的功能,我展示一個旋轉的GIF和功能後隱藏:
$('#spinner').show();
var res = validate_address(address, city, state, zip);
$('#spinner').hide();
的問題是show()
和hide()
功能都得到調用後的Ajax調用完成。
我通過向服務器端的ajax調用添加了5秒的延遲來驗證這一點。在我觸發這個序列5秒後,兩個都立即調用show()
和hide()
。
在你打電話給我之前,我知道不會鼓勵同步請求。在這種情況下,我必須使用同步呼叫。我只是想試試這裏發生了什麼,以及如何解決它。
「這不是你正在尋找的Ajax」,你應該使用異步請求,不管是什麼原因你可能需要鎖定瀏覽器嗎? – adeneo
jQuery動畫不會等待其他功能。看看這個:http://api.jquery.com/ajaxComplete/ –
爲什麼你認爲你必須做一個同步調用? Imo這是DOM不會在顯示和隱藏調用之間渲染的原因(是的,它在* ajax調用之前執行) – Bergi