What do the different readystates in XMLHttpRequest mean, and how can I use them?

XMLHttpRequest has 5 readyStates, and I only use 1 of them (the last one, 4).

What are the others for, and what practical applications can I use them in?

111127 次浏览

readyState值的完整列表如下:

State  Description
0      The request is not initialized
1      The request has been set up
2      The request has been sent
3      The request is in process
4      The request is complete

(来自 https://www.w3schools.com/js/js_ajax_http_response.asp)

实际上,除了4个,你几乎从来不用它们中的任何一个。

一些 XMLHttpRequest 实现可以让您在 readyState==3时在 responseText中看到部分接收到的响应,但是这并不是普遍支持的,也不应该被依赖。

最终文件原件

012只跟踪到目前为止发出请求所需的方法的数量。

3告诉您服务器的响应已经开始进入。但是,当您从网页中使用 XMLHttpRequest对象时,您几乎无法处理这些信息,因为您无法访问允许您读取部分数据的扩展属性。

ReadyState4是唯一具有任何意义的。

(*: about the only conceivable use I can think of for checking for readyState 3 is that it signals some form of life at the server end, so you could possibly increase the amount of time you wait for a full response when you receive it.)

Kieron 的回答包含了没有人信赖的 w3学校参考资料, bobince's answer gives link , which actually tells native implementation of IE ,

因此,下面是引用的原始文档,以正确理解 readystate 所代表的含义:

XMLHttpRequest 对象可以有几种状态。ReadyState 属性必须返回当前状态,该状态必须是下列值之一:

UNSENT (数值0)
物体已经构造好了。

OPENED (numeric value 1)
The open() method has been successfully invoked. During this state request headers can be set using setRequestHeader() and the request can be made using the send() method.

HEADERS_RECEIVED (numeric value 2)
所有重定向(如果有的话)都已经执行,并且已经接收到最终响应的所有 HTTP 头。现在可以使用该对象的几个响应成员。

LOADING (numeric value 3)
正在接收响应实体正文。

DONE (数值4)
数据传输已经完成,或者在传输过程中出了问题(例如无限重定向)。

请在此阅读: W3C 就绪状态解释

onreadystatechange Stores a function (or the name of a function) to be called automatically each time the readyState property changes ReadyState 保持 XMLHttpRequest 的状态。从0到4的变化:

0: 请求未初始化

1: 建立服务器连接

2: 收到请求

3: 处理申请

请求完成,响应准备就绪

状态200: 「可以」

404: 找不到页面

  • 0: 已经创建了 UNSENT 客户端。 open ()尚未调用。
  • 1: 调用了 OPENED open ()。
  • 2: HEADERS _ RECEIVED send ()已被调用,头和状态 都有空。
  • 3: 加载下载; response seText 保存部分数据。
  • 操作完成。

( https://developer.mozilla.org/en-us/docs/web/api/xmlhttprequest/readystate )