簡體   English   中英

超時無法在ajax post請求中工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM