2017-04-25 33 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

相关问题