基本上,在同步ajax請求期間,瀏覽器被阻塞,並且在瀏覽器被阻止時不能執行javascript。正因爲如此,jQuery無法在設置超時後放棄ajax請求,因爲jQuery是javascript,而且在瀏覽器被阻止時無法執行javascript。這是同步ajax的主要缺陷。
任何時候你可能想要一個同步請求,你應該使用一個異步的,並在回調中發生什麼,如下所示;
$.ajax({
url : 'webservices.php',
timeout: 200,
dataType : 'json',
data : {
'cmd' : 'ping',
},
success : function(data, textStatus) {
$.ajax({
url : 'webservices.php',
async: false,
dataType : 'json',
data : {
'cmd' : 'feedback',
'data' : data,
'userinfo' : window.dsuser
},
success : function(data, textStatus) {
// success!
Status("Thanks for the feedback, "
+ window.dsuser.user + "!");
}
});
},
error : function(jqhdr, textStatus,
errorThrown) {
Status("There was trouble sending your feedback. Please try again later");
}
});
任何時候你可能想要一個同步請求,你應該使用一個異步的,並且在回調之後會發生什麼。 – 2010-02-03 20:57:55
我懷疑它會被實現,因爲同步XHR已被正式棄用,儘管它對於某些情況下唯一可用的解決方案,例如在document_start上執行頁面腳本之前將大動態數據傳遞給擴展中的內容腳本。 – wOxxOm 2017-09-28 15:04:13