XMLHttpRequest的问题.完成值支持在FF / Chrome

Problem with XMLHttpRequest.DONE values supported in FF / Chrome

本文关键字:FF Chrome 支持 问题 XMLHttpRequest      更新时间:2023-09-26

我有一段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规范,这应该意味着OPENED。但是XMLHttpRequest.DONE在Firebug中显示为undefined而不是4

http://www.w3.org/TR/XMLHttpRequest/状态

在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;
        }
    }
};