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 之外,你几乎从不使用它们中的任何一个。
某些XMLHttpRequest 实现可能会让您在responseText
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)