Javascript jquery ajax请求失败,未触发完整或错误处理程序
我正在做一个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
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工作正常,所以我想我会接受的。谢谢