我有这个函数用于将数据发送到我的(localhost)服务器。但是,当Wamp意外停止(localhost服务器关闭)时,我注意到超时无法正常工作。
如果我将超时设置为2000 mS,则回调通常会被调用。如果我设置为4000 mS,则永远不会调用超时。相反,readystate将达到4(DONE),但没有HTTP状态(零?)。
调试如下:
READY STATE: 2 STATUS: 0
READY STATE: 4 STATUS: 0
这是正常的还是我想念这里的东西? 我最近使用的是Firefox 53.谢谢。
function ServerSend(url) {
var xhr = new XMLHttpRequest();
// In Internet Explorer, the timeout property may be set only after calling the open() method and before calling
// the send() method.
xhr.open("GET", url, true);
xhr.timeout = 4000;
// https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
xhr.onreadystatechange = function() {
if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
ShowInfo(xhr.responseText)
}
// DEBUG
{
console.log("READY STATE: "+xhr.readyState+" STATUS: "+xhr.status);
}
};
xhr.ontimeout = function () {
xhr.abort();
alert("Timed out!!!");
//ShowInfo("Server timeout");
};
xhr.send();
}