XMLHttpRequest中的不同readystates是什么意思,我该如何使用它们?

时间:2009-03-11 00:03:49

标签: javascript ajax xmlhttprequest readystate

XMLHttpRequest有5个readyState个,我只使用其中一个(最后一个,4)。

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

5 个答案:

答案 0 :(得分:171)

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时看到readyState==3中部分收到的回复,但这不是普遍支持的,不应该依赖。

答案 1 :(得分:31)

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

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

  

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

     

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

     

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

     

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

     

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

     

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

请在此处阅读:W3C Explaination Of ReadyState

答案 2 :(得分:22)

Original definitive documentation

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

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

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

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

答案 3 :(得分:1)

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

0:请求未初始化

1:建立服务器连接

2:收到请求

3:处理请求

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

状态200:“确定”

404:找不到网页

答案 4 :(得分:0)

  • 0:已创建UNSENT客户端。 open()尚未调用。
  • 1:已打开open()。
  • 2:已调用HEADERS_RECEIVED send(),以及标题和状态 可用。
  • 3:加载下载; responseText保存部分数据。
  • 4:完成操作已完成。

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