【问题标题】:Why when I send a GET request using XMLHttpRequest, I get two readyState 1?为什么当我使用 XMLHttpRequest 发送 GET 请求时,我得到两个 readyState 1?
【发布时间】:2013-01-05 05:28:12
【问题描述】:
<div id="myDiv"></div>
<script>                    
    var xmlhttp = new XMLHttpRequest();
    document.getElementById("myDiv").innerHTML += xmlhttp.readyState + "<br/>";
    xmlhttp.onreadystatechange = function() {
        document.getElementById("myDiv").innerHTML += xmlhttp.readyState + "<br/>";
    }
    xmlhttp.open("GET", "example.com", true);
    xmlhttp.send();
</script>

我得到这个显示:

0
1
1
2
3
4

为什么有两个 1?

我的浏览器是 Firefox 17.0。

【问题讨论】:

  • here解释了状态,似乎firefox在send()上设置状态1通知js引擎请求开始传输,尝试删除send()看看你会收到多少状态跨度>
  • 有趣的是,当您将 false 传递给 open() 时,它只会产生一个 1,而不是 2 和 3。您可以将此链接添加到您的问题中:jsfiddle.net/S55vq/1 为方便起见
  • 还考虑到 Chrome 只产生单 1,这只是浏览器特定的行为,FF 的下一个版本也可能产生单 1

标签: javascript ajax xmlhttprequest


【解决方案1】:

为 XML HTTP 对象定义了就绪状态:https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#Properties

但每个浏览器的就绪状态序列似乎都不同,因此您不能依赖代码中的特定状态序列。

FF 19: 0, 1, 1, 2, 3, 4

Chrome 24: 0, 1, 2, 3, 4

Opera 12.12: 0, 1, 2, 3, 4

Safari 5.1: 0, 1, 2, 3, 4

IE 9: 0, 1, 1, 2, 3, 4

您可以测试您的浏览器here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 2011-04-05
    • 1970-01-01
    • 2019-09-13
    • 1970-01-01
    • 2019-05-15
    • 2021-09-02
    相关资源
    最近更新 更多