我有一段需要调试的Javascript:
var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
if (this.readyState === XMLHttpRequest.DONE) {
if (this.status === 200) {
success = true;
}
}
};
逐步浏览Chrome和Firefox,我发现第一个“if”失败了。我可以看到“this.readyState”设置为“1”,根据W3C规范来判断应该是“打开”。将鼠标悬停在Firebug中的“.DONE”段上会将其显示为未定义而非“4”。
http://www.w3.org/TR/XMLHttpRequest/#states
Firefox和Chrome中是否存在不支持这些值的问题?
提前致谢!
答案 0 :(得分:8)
你应该根据你的情况中的一个数字值检查readyState。
答案 1 :(得分:6)
某些浏览器不知道XMLHttpRequest.Done属性,所以你应该在第一个'if'之前检查它。
var DONE = (typeof XMLHttpRequest.Done !== 'undefined') ? XMLHttpRequest.Done : 4;
答案 2 :(得分:0)
您可以使用httpRequest变量已经具有的DONE值:
var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
if (this.readyState === this.DONE) {
if (this.status === 200) {
success = true;
}
}
};