XMLHttpRequest 有 5 个 readyStates,我只使用其中的一个(最后一个, 4).

其他的有什么用途,我可以在哪些实际应用中使用它们?

有帮助吗?

解决方案

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之外,你几乎从不使用任何一种。

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

其他提示

kieron 的回答包含w3schools ref。没人依赖, bobince 的回答给出了链接,它实际上讲述了IE的原生实现,

所以这里引用的原始文档正确地理解了readystate代表什么:

  

XMLHttpRequest对象可以处于多种状态。 readyState属性必须返回当前状态,该状态必须是以下值之一:

     

UNSENT(数值0)
     该对象已经构建。

     

OPENED(数值1)
     已成功调用open()方法。在此状态期间,可以使用setRequestHeader()设置请求标头,并且可以使用send()方法进行请求。

     

HEADERS_RECEIVED(数值2)
     已遵循所有重定向(如果有)并且已收到最终响应的所有HTTP标头。该对象的几个响应成员现在可用。

     

LOADING(数值3)
     正在接收回复实体。

     

完成(数值4)
     传输过程中数据传输已完成或出现问题(例如无限重定向)。

请在此处阅读: W3C解释ReadyState

原创权威文件

0 1 2 仅跟踪到目前为止发出请求的必要方法的数量。

3 告诉你服务器的响应已经开始进入。但是当你从网页上使用 XMLHttpRequest 对象时几乎没有(*)你可以处理该信息,因为您无权访问允许您读取部分数据的扩展属性。

readyState 4 是唯一具有任何意义的人。

(*:关于检查readyState 3 的唯一可想到的用途是它在服务器端发出某种形式的生命信号,所以你可能会增加你的时间等你收到它后会得到完整的答复。)

onreadystatechange存储每次readyState属性更改时要自动调用的函数(或函数名称) readyState保存XMLHttpRequest的状态。从0到4的变化:

0:请求未初始化

1:建立服务器连接

2:收到请求

3:处理请求

4:请求已完成且响应已准备好

状态200:“确定”

404:找不到网页

  • 0:未发送的客户端已创建。open() 尚未调用。
  • 1:OPENED open() 已被调用。
  • 2:已调用headers_received send(),并且可以使用标题和状态。
  • 3:正在加载 正在下载;responseText 保存部分数据。
  • 4:DONE 操作完成。

(来自 https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top