2017-04-25 91 views
0

這裏是我的代碼:如何中止ajax請求,如果它需要一段時間?

$("input").on('keydown', function(){ 
    $.ajax({ 
     url : '/files/tags_autocomplete.php', 
     dataType : 'JSON', 
     success : function (tags) { 
      $("ul").html(tags.output); 
     } 
    }); 
}); 

它的工作原理,以及和所有的罰款。只是有時tags_autocomplete.php返回後8秒(這是太多)或有時它完全失敗,並不會返回一個響應。

無論如何,我想發一個something went wrong機制,應該運行4秒發送該ajax請求後。我怎樣才能做到這一點?

+1

[使用jQuery中止Ajax請求(可能的重複http://stackoverflow.com/問題/ 446594/abort-ajax-requests-using-jquery) – chiliNUT

+0

@chiliNUT雖然這可能會起作用,但超時會更合適。這將是一個更好的重複:http://stackoverflow.com/questions/5225597/set-timeout-for-ajax-jquery – FrankerZ

+0

可能重複[設置超時爲ajax(jQuery)](http://stackoverflow.com/問題/ 5225597/set-timeout-for-ajax-jquery) – FrankerZ

回答

4

您可以指定一個超時

可以超時後趕上錯誤

$("input").on('keydown', function(){ 
    $.ajax({ 
     url : '/files/tags_autocomplete.php', 
     dataType : 'JSON', 
     success : function (tags) { 
      $("ul").html(tags.output); 
     }, 
     error : function (jqXHR, textStatus, errorThrown) { 

     }, 
     timeout: 4000 
    }); 
}); 

文檔http://api.jquery.com/jQuery.ajax/

+0

那麼我需要知道何時執行'timeout'。因爲我必須顯示彈出窗口包含*「出錯了」*消息。我如何執行'timeout'時? –

+0

@MartinAJ http://stackoverflow.com/questions/3543683/determine-if-ajax-error-is-a-timeout – FrankerZ

+0

失敗或錯誤回調將被使用,然後當它超時。 – trevster344

相關問題