[英]Timeout not working in ajax post request
我無法在3秒后制作ajax錯誤回調函數。 我嘗試了超時,但在指定的時間后它不會切換到錯誤回調! 我無法獲得警報Got timeout
。
當我在這個網站上提到類似問題的類似問題時,它沒有幫助。 它們都使用ajax GET類型。 我正在使用jquery 1.10.1庫。
腳本:
$.ajax({
type: 'POST',
timeout: 3000,
url : "http://mydomain/Services.asmx/Best_Scores",
dataType: "text",
async:false,
crossDomain:true,
data: "strJsonRequest="+scoredata,
success: function (data) {
// Success code ...
},
error: function (data, textStatus, errorThrown) {
if(textStatus == "timeout") {
alert("Got timeout");
}
}
});
有解決方案嗎
修復:
將async : false
更改為async: true
原因:
同步AJAX調用將阻塞,直到請求完成。 由於技術原因,無法實現超時,因為以后必須執行AJAX調用。
如果稍后執行AJAX調用,該函數必須以某種方式實現阻塞功能,以阻止代碼在AJAX調用后進一步運行,並在超時后再次執行 - 不可能。
今天(2019年),我仍然有這個問題。
我有一個ajax調用太長時間(取決於Date Start-> Date End)php腳本。
幾分鍾后我得到錯誤500,async:true沒有幫助。
電話是:
$.ajax({
type: "GET",
dataType: 'json',
url: 'mymscript.php',
contentType:'application/json;charset=UTF-8;',
data: $('[name="myForm"]').serialize(),
async:true,
timeout:0,
success: function(response){
...
我決定使用:side PHP:
set_time_limit(0);
ignore_user_abort(true);
在腳本開始。
echo ' ';
flush();
ob_flush();
在腳本中間(例如每天在主循環中)。 這有助於讓客戶端不要斷開連接(我認為這是主要問題)。
使用這個我繼續為最終的json寫空格。 幸運的是,jquery在解析json之前修剪了空格,最后,json是有效的。
所以我可以捕獲響應對象,以了解腳本是否以錯誤或警告結束。
我希望這能幫助別人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.