Javascript jquery ajax请求失败,未触发完整或错误处理程序

Javascript jquery ajax请求失败,未触发完整或错误处理程序,javascript,ajax,Javascript,Ajax,我正在做一个ajax调用,如下所示: var requestData = function() { $.ajax({ dataType: 'jsonp', jsonp: 'js', url: "http://someServer", success: function (data) { // do stuff with data }, complete : funct

我正在做一个ajax调用,如下所示:

var requestData = function() {
    $.ajax({
        dataType: 'jsonp',
        jsonp: 'js',
        url: "http://someServer", 
        success: function (data) {
            // do stuff with data
        },
        complete : function(data) {
            // try again in 5 seconds
            setTimeout(requestData, 5000);
        }
    });
};
一切都很好,它工作正常,除了:服务器有点不稳定,有时无法返回响应。这很好,但是当这种情况发生时,完整的处理程序永远不会触发。我还尝试使用错误处理程序。还有什么我能做的吗?我曾考虑过使用setInterval,但我真的希望它在这一次之后再做下一次,而不是在一个设定的时间,它们可能会堆积起来


更新:当服务器出现故障时,我无法在chrome的控制台中加载资源。

问题是JSONP通过将脚本标记插入DOM而不是通过XMLHTTPRequest来工作。脚本标记没有onerror属性,因此无法使用常规方法测试是否成功。唯一的方法就是超时

类似的方法可能会奏效:

var requestComplete = {};
var requestData = function() {
    var now = (new Date()).getTime();
    requestComplete[now] = false;
    $.ajax({
        dataType: 'jsonp',
        jsonp: 'js',
        url: "http://someServer", 
        success: function (data) {
            requestComplete[now] = true;
            // do stuff with data
        }
    });
    setTimeout(function() {
        if (!requestComplete[now]) {
            setTimeout(requestData, 5000); // try again in 5 seconds
        }
    }, 5000); // give the JSONP request 5 seconds to work
};

好啊setInterval工作正常,所以我想我会接受的。谢谢