XMLHttpRequest.DONE值有问题吗?

时间:2011-08-01 12:41:20

标签: javascript xmlhttprequest

我有一段需要调试的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中是否存在不支持这些值的问题?

提前致谢!

3 个答案:

答案 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;
        }
    }
};