需要检查jQuery AJAX响应时间并采取一些措施

时间:2012-02-10 06:08:08

标签: jquery ajax

$.ajax({  
        url: "http://ajaxhttpheaders.appspot.com", 
        dataType: 'jsonp', 

        success: function(headers) { 
            language = headers['Accept-Language']; 
            alert(language);
        },

        //it doesn't work
        //timeout: 2000,

        error: function() { 
            //wait for 2 sec..

            //and if there are no response, do something.. 
        }
    }); 

我找到timeout: 2000选项,但它不起作用。

4 个答案:

答案 0 :(得分:1)

这有点笨拙,但这应该可以解决问题:

var cancelled = false;
var errorTimer;
$.ajax({  
    url: "http://ajaxhttpheaders.appspot.com", 
    dataType: 'jsonp', 

    success: function(headers) { 
        if (! cancelled) {
            cancelled = true; // stop timeout code from running
            language = headers['Accept-Language']; 
            alert(language);
        }
    });

});
var errorCode = function () {
    if (!cancelled) {
        cancelled = true;
        alert('Took too long and now we ignore the response!');
    }
};
setTimeout(errorCode, 2000);

答案 1 :(得分:0)

如何处理超时,请回答here

我不确定在获得成功回复之前,会有不同时间间隔发生的事件。

答案 2 :(得分:0)

您的数据类型为 jsonp ,明确提及here

  

脚本和JSONP请求不能被超时取消;剧本   即使在超时后到达,它也会运行。

答案 3 :(得分:0)

Quoting Docs:

  

Ajax请求是有时间限制的,因此可以捕获和处理错误   提供更好的用户体验。请求超时通常也是   保留默认值或使用 $ .ajaxSetup()设置为全局默认值   而不是被超时的特定请求覆盖   选项

此外:

  

仅在Firefox 3.0+中,脚本和JSONP请求无法取消   超时;即使超时后到达,脚本也会运行   周期。