0

是否可以判断一个 jquery ajax 请求是否已经持续了超过一定的时间?如果请求持续了 10 秒,我想提示我网站的用户重新加载并重试,但我在文档中找不到任何内容来满足我的请求。

4

3 回答 3

5

尝试设置 timeout 属性并获取错误处理程序参数。可能的值为

"timeout", "error", "abort", and "parsererror"

$.ajax({
    url: "/ajax_json_echo/",
    type: "GET",
    dataType: "json",
    timeout: 1000,
    success: function(response) { alert(response); },
    error: function(x, t, m) {
        if(t==="timeout") {
            alert("got timeout");
        } else {
            alert(t);
        }
    }
});​
于 2013-11-01T15:49:45.453 回答
2

因此,对于您网站中的所有 ajax 请求......你应该做这样的事情......

$.ajaxSetup({
     beforeSend: function(jqXHR, settings){

          /* Generate a timer for the request */
          jqXHR.timer = setTimeout(function(){

               /* Ask the user to confirm */
               if(confirm(settings.url + ' is taking too long. Cancel request?')){
                   jqXHR.abort();
               }
          }, 10000);
     }
});
于 2013-11-01T16:03:20.483 回答
1

设置超时,然后在 ajax 调用完成后取消它。

var timer = setTimeout(function() {
    alert('Too long!');
}, 10000);

$.getJSON(url, function() {
   clearTimeout(timer);
});
于 2013-11-01T15:49:33.560 回答