Javascript XMLHttpRequest.DONE值有问题吗?
我有一段Javascript需要调试:Javascript XMLHttpRequest.DONE值有问题吗?,javascript,xmlhttprequest,Javascript,Xmlhttprequest,我有一段Javascript需要调试: var httpRequest = new XMLHttpRequest(); httpRequest.onreadystatechange = function() { if (this.readyState === XMLHttpRequest.DONE) { if (this.status === 200) { success = true; } } }; 在Chrome和Fi
var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
if (this.readyState === XMLHttpRequest.DONE) {
if (this.status === 200) {
success = true;
}
}
};
在Chrome和Firefox上,我发现第一个“如果”失败了。我可以看到“this.readyState”被设置为“1”,根据W3C规范判断,这意味着“OPENED”。将鼠标悬停在Firebug中的“.DONE”段上,会将其显示为未定义,而不是“4”
Firefox和Chrome中是否存在不支持这些值的问题
提前谢谢 您应该根据其中一个数值检查readyState,在您的情况下为4。某些浏览器不知道
XMLHttpRequest.DONE
属性,因此您应该在第一个“if”之前检查它:
var DONE = (typeof XMLHttpRequest.DONE !== 'undefined') ? XMLHttpRequest.DONE : 4;
您可以使用httpRequest变量已经具有的DONE值:
var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
if (this.readyState === this.DONE) {
if (this.status === 200) {
success = true;
}
}
};
太好了,就这样了。谢谢!一个小提示:
XMLHttpRequest.DONE
应该包含数值4
,但它没有在IE8及以下版本中实现。请解释(在您的回答中)这是如何回答OP的问题的。事实上,这只是一段没有太多上下文的代码。由于它返回undefined
,它不是缩短为只XMLHttpRequest.DONE | | 4
,weirdI不认为您的this.done
中的this
值指的是httpRequest
变量?@AJarofClay事实上,也由变量httpRequest
:)表示的是XMLHttpRequest。如果您使用控制台.log(this)
执行此示例,您可以测试它:)