XMLHttpRequest中的不同readystates是什么意思,我该如何使用它们?
XMLHttpRequest
有5个readyState
,我只使用其中的1个(最后一个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
看到部分接收到的响应,但这并不是普遍支持的,不应该被依赖。
基隆的答案包含w3schools参考。 没有人依赖, bobince的答案给出了链接,这实际上告诉了IE的本地实现,
所以这里是原来的文档引用正确理解什么readystate代表:
XMLHttpRequest对象可以处于几种状态。 readyState属性必须返回当前状态,该状态必须是以下值之一:
UNSENT(数值0)
该对象已被构build。打开(数值1)
open()方法已成功调用。 在此状态期间,可以使用setRequestHeader()来设置请求标头,并且可以使用send()方法进行请求。HEADERS_RECEIVED(数值2)
所有的redirect(如果有的话)都已经被遵守,并且最终响应的所有HTTP头已经被接收。 该对象的几个响应成员现在可用。LOADING(数值3)
响应实体正在被接收。完成(数值4)
数据传输已完成或传输过程中出现问题(例如无限redirect)。
请阅读这里: W3C的ReadyState的解释
原始的权威文件
0
和2
只跟踪到目前为止你要调用的请求有多less个必要的方法。
3
告诉你服务器的响应已经开始进行了。但是当你使用网页中的XMLHttpRequest
对象时,你可以使用这些信息几乎没有(*),因为你不能访问扩展属性允许您读取部分数据。
readyState 4
是唯一具有任何意义的。
(*:关于检查readyState 3
的唯一可以想象的用途是它在服务器端表示某种forms的生命,所以你可能增加等待收到完整响应的时间。 )
onreadystatechange存储每次readyState属性更改时自动调用的函数(或函数的名称)readyState保存XMLHttpRequest的状态。 从0到4的变化:
0:请求未初始化
1:build立服务器连接
2:收到请求
3:处理请求
4:请求已完成,响应已准备就绪
状态200:“确定”
404:找不到页面