【发布时间】:2010-07-30 10:27:05
【问题描述】:
我使用以下代码每 3 秒发送一个 ajax 请求:
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);
问题是,即使家庭服务器不可访问(例如未连接到 LAN),也会调用成功函数而不是带有“超时”状态的错误函数(在 Ubuntu 10.04 上测试)使用 FireFox 3.6.7)。
(如果没有定期请求,它将正常工作:在超时时,使用正确的 'timeout'-statusText 调用错误函数。)
success-alert-function 将在超时时显示以下文本:
文本状态:成功, XHR.readyState: 4, XHR.状态:0 所以我需要使用 XHR.status-value(成功时应该为 200)来确定错误。 这是正常行为还是我做错了什么?【问题讨论】:
标签: javascript jquery