readyState vs status == 200

use*_*818 36 javascript ajax

xmlhttp.onreadystatechange = function()
{
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
    {
        document.getElementById("myDiv").innerHTML = xmlhttp.responseText;
    }
}
Run Code Online (Sandbox Code Playgroud)

以上代码来自:http://www.w3schools.com/ajax/ajax_xmlhttprequest_onreadystatechange.asp.

题:

根据本教程:

readyState: 4: request finished and response is ready 

status: 200: "OK" 

When readyState is 4 and status is 200, the response is ready:
Run Code Online (Sandbox Code Playgroud)

从什么时候开始xmlhttp.readyState == 4,响应准备就绪,我们为什么还需要xmlhttp.status == 200xmlhttp.readyState == 4和之间有什么区别xmlhttp.status == 200

Ray*_*lus 39

响应的状态xhr.status(通常)用于确定请求是否成功. xhr.readyState仅用于确定请求的状态,例如"尚未发送"(0),"完成并收到响应"(4)等.

服务器负责提供status,而用户代理提供readyState.


Agu*_*ico 23

status表示服务器响应是否正常.
一般来说,当你获得一个状态

500 - 599:服务器出错

400 - 499:这是客户端错误(例如:找不到404页)

300 - 399:然后存在重定向

200 - 299:那是正确的

100 - 199:表示信息消息

然后状态== 200给你一个消息,服务器说:'嘿,我做的工作!'


Ans*_*hul 19

我的比喻:携带病人的救护车正在去医院.在这种情况下,家庭(客户)和医院(服务器)需要跟踪两件事情

  • 救护车成功送达医院.(readyState)
  • 在此过程中患者的健康更新.(status)

如果readyState === 4status === 200,意味着一切都很好.以同样的方式ajax调用工作.

  • 很好的解释。 (2认同)

小智 13

readyState保存XMLHttpRequest的状态.从0到4的变化:

0:请求未初始化

1:建立服务器连接

2:收到请求

3:处理请求

4:请求完成并且响应准备就绪状态200:"OK"404:找不到页面