XMLHttpRequest
有 5readyState
秒,我只使用其中的 1 个(最后一个,4
)。
其他的有什么用,我可以在哪些实际应用中使用它们?
XMLHttpRequest
有 5readyState
秒,我只使用其中的 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 之外,您几乎从不使用它们中的任何一个。
一些responseText
XMLHttpRequest 实现可能会让您在when中看到部分接收到的响应readyState==3
,但这不是普遍支持的,也不应该依赖。
kieron的答案包含 w3schools 参考。没有人依赖, bobince的答案给出了链接,它实际上告诉了 IE 的本机实现,
所以这里是引用的原始文档,以正确理解 readystate 代表什么:
XMLHttpRequest 对象可以处于多种状态。readyState 属性必须返回当前状态,该状态必须是以下值之一:
UNSENT (数值 0)
对象已被构造。OPENED(数值 1)
open() 方法已成功调用。在此状态期间,可以使用 setRequestHeader() 设置请求标头,并且可以使用 send() 方法发出请求。HEADERS_RECEIVED(数值 2)
已遵循所有重定向(如果有)并且已收到最终响应的所有 HTTP 标头。该对象的几个响应成员现在可用。LOADING(数值 3)
正在接收响应实体主体。DONE(数值 4)
数据传输已完成或传输过程中出现问题(例如无限重定向)。
请在此处阅读:W3C 对 ReadyState 的解释
0
,1
并且2
只跟踪到目前为止您调用了多少必要的方法来发出请求。
3
告诉您服务器的响应已经开始进入。但是当您使用XMLHttpRequest
网页中的对象时,您几乎无法使用该信息(*),因为您无权访问允许的扩展属性您读取部分数据。
readyState4
是唯一具有任何意义的状态。
(*:我能想到的用于检查 readyState 的唯一可能用途3
是它在服务器端发出某种生命形式的信号,因此您可能会增加在收到完整响应时等待完整响应的时间。)
onreadystatechange 存储每次 readyState 属性更改时自动调用的函数(或函数名称) readyState 保存 XMLHttpRequest 的状态。从 0 到 4 的变化:
0:请求未初始化
1:服务器连接建立
2:收到请求
3:处理请求
4:请求完成,响应就绪
状态 200:“确定”
404页面不存在
(来自 https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState)