【问题标题】:confused -- my XMLHttpRequest has readyState of 0 and status of 200困惑——我的 XMLHttpRequest 的 readyState 为 0,状态为 200
【发布时间】:2009-03-03 20:56:36
【问题描述】:

我在 firebug 中设置了一个断点,并正在检查我的 xhr 对象。它的readyState是0,它的状态是200。我的理解是,如果状态是200,那么请求至少应该已经开始,readystate应该至少是1。谁能解释一下这是怎么回事?

我正在使用 jquery 的 $.ajax 来创建 xhr 对象,但我认为这不会影响 xhr 的就绪状态和状态。

【问题讨论】:

  • xhr 对象是否返回任何数据?

标签: javascript jquery ajax xmlhttprequest


【解决方案1】:

w3c defines 表示readyState 是 xmlhttprequest 进度的渐进式指示。它按从 0->4 的顺序转换(未初始化、打开、发送、接收、加载),并且只有在加载时才准备好读取内容。这是属性的重点,也是您监视 onreadystatechange 事件而不是作为响应标头的状态的原因。

按照相同的规范,status 应该在不可用时引发异常(在接收或加载时),但我想这是为了便于使用而被实现所蔑视。

【讨论】:

  • “在接收或加载时”?状态应仅在 loaded 上可用。
  • 来自规范:“它必须在 readyState 为 3(接收)或 4(加载)时可用。”
【解决方案2】:

readyState 为 4 时请求完成,而不是 status 为 200 时。

【讨论】:

  • 状态 200 可能在您获取任何有意义的数据之前发生:它只是一个标题。
  • @Luca 够公平的。谢谢。我的代码现在可以工作了,我会认为这个谜团已按我的需要解决了。
猜你喜欢
  • 2016-07-24
  • 1970-01-01
  • 2014-05-28
  • 2018-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-19
相关资源
最近更新 更多