2017-04-15 87 views
0

在我的Web應用程序中,我試圖在調用REST API時處理超時情況。這是我使用jQuery ajax調用API的代碼。在Javascript中通過瀏覽器處理HTTP請求超時

$.ajax({ 
      type: "POST", 
      url: endpoint, 
      data: payload, 
      dataType: dataType, 
      timeout: 0, 
      success: successHandler, 
      error: failureHandler 
     }); 

成功和失敗處理程序如下所示。

function successHandler(data) { 
    //Got the data 
} 

function failureHandler(xhr, textStatus, thrownError) { 
    if(xhr.status==404) { 
     console.log('Page not found'); 
    } else if(xhr.status==408) { 
     console.log('request timed out at server. You may want to retry') ;  
    } 
} 

如果超時發生在服務器,它給狀態408.但有時,由於網絡連接問題,在客戶端(瀏覽器)本身是越來越超時,因爲它不能連接到服務指定時間。我想這是瀏覽器的行爲。如果請求被瀏覽器超時,那麼xhr.statustextStatus會是什麼?如何處理這種情況?

[編輯]我在Set timeout for ajax (jQuery)找到了一些解釋。這解釋了我們如何在代碼中設置超時。但我的問題是,我不想像這樣設置超時。檢查ajax請求中的代碼,我設置了timeout: 0這意味着,沒有超時,我要等到我得到服務器的響應。同時,瀏覽器可能會因爲全局超時設置而終止該請求。我正在尋找可以解決這個問題的解決方案。

+1

[如何在瀏覽器中檢測AJAX(XmlHttpRequest)調用的超時?](http://support.microsoft.com/kb/1818705/how-to-detect-timeout-on-an- ajax-xmlhttprequest-call-in-the-browser) – APerson

+0

添加我的解釋爲什麼這個問題是不同的? –

回答

相關問題