XMLHttpRequest.DONE值有问题吗?

Mea*_*ell 7 javascript xmlhttprequest

我有一段需要调试的Javascript:

var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
    if (this.readyState === XMLHttpRequest.DONE) {
        if (this.status === 200) {
            success = true;
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

逐步浏览Chrome和Firefox,我发现第一个"if"失败了.我可以看到"this.readyState"设置为"1",根据W3C规范来判断应该是"打开".将鼠标悬停在Firebug中的".DONE"段上会将其显示为未定义而不是"4".

http://www.w3.org/TR/XMLHttpRequest/#states

Firefox和Chrome中是否存在不支持这些值的问题?

提前致谢!

小智 8

您应该根据您的情况中的一个数值4检查readyState.

  • 一个小注释:`XMLHttpRequest.DONE`*应该*保存数值`4`,但它不是在IE8及以下版本中实现的. (7认同)

sto*_*iya 6

有些浏览器不知道XMLHttpRequest.Done属性,所以你应该在第一个'if'之前检查它.

var DONE =  (typeof XMLHttpRequest.Done !== 'undefined') ? XMLHttpRequest.Done : 4;
Run Code Online (Sandbox Code Playgroud)