我用下面的代码来发送一个Ajax请求每3秒定期Ajax请求:超时与jQuery的
var refreshId = setInterval(function() {
$.ajax({
async: true,
url: 'gohere',
dataType: 'text',
cache: false,
timeout: 5000,
success: function(result, textStatus, XMLHttpRequest) {
alert('textStatus: ' + textStatus + ",\nXHR.readyState: " + XMLHttpRequest.readyState + ",\nXHT.status: " + XMLHttpRequest.status);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert('textStatus: ' + textStatus + ",\nXHR.readyState: " + XMLHttpRequest.readyState + ",\nXHT.status: " + XMLHttpRequest.status);
}
});
}, 3000);
的问题是,即使家庭无法访问服务器(例如,不连接到局域网),将会调用成功函数,而不是使用“超时”状态(在Ubuntu 10.04上使用FireFox 3.6.7进行测试)的错误函数。
(无定期请求它会正常工作:在超时误差函数被调用正确的“timeout'-状态文本。)
成功的警报功能上会显示超时以下文字:
textStatus: success, XHR.readyState: 4, XHR.status: 0所以我需要使用XHR.status值,成功时应为200,以确定错误。 这是正常行为还是我有什么问题?
感谢您的回复。这工作正常。但是现在我遇到了'$ .each(...)'而不是'setInterval'的问题。我用它来加载多个图像。你有解决方法吗? – Biggie 2010-07-30 12:26:43
与定期请求并行使用'.ajax()'时,有时会出现同样的问题。有没有办法避免在成功函数中检查'XHR.status == 0'? – Biggie 2010-07-30 20:36:43