readyState vs status == 200

时间:2013-07-10 02:18:37

标签: javascript ajax

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

以上代码来自: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:

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

9 个答案:

答案 0 :(得分:36)

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

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

答案 1 :(得分:22)

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

  

500 - 599:服务器出错

     

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

     

300 - 399:然后存在重定向

     

200 - 299:然后是正确的

     

100 - 199:表示信息消息

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

答案 2 :(得分:19)

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

  • 救护车顺利到达医院。(readyState
  • 此过程中患者的健康状况更新。(status

如果readyState === 4status === 200,则表示一切正常。以同样的方式调用ajax。

答案 3 :(得分:13)

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

  

0:请求未初始化

     

1:建立服务器连接

     

2:收到请求

     

3:处理请求

     

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

答案 4 :(得分:2)

请注意您的服务器端代码有错误。您请求页面,当服务器完成流响应时,readyState将为4,但状态代码将为500(或500-something)。

答案 5 :(得分:0)

readyState指的是请求的响应 - 当您完成检索响应并且有一些要查看的内容时它是4。实际值仍然未知,因此您需要检查已返回的status

答案 6 :(得分:0)

onreadystatechange = function()仅在我们从服务器获得响应时执行。 如果我们从服务器得到响应意味着我们的请求已经完成,由4表示.And 200告诉我们它的状态是正确的。 “4:请求已完成,响应已准备好状态200” 如果找不到页面,我们将获得状态404。

答案 7 :(得分:0)

readyState 保留XMLHttpRequest的状态。

0:请求未初始化

1:服务器连接已建立

2:收到请求

3:处理请求

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

状态返回请求的状态号

200:“确定”

403:“禁止”

404:“未找到”

有关响应消息的详细信息 访问

https://www.w3schools.com/tags/ref_httpmessages.asp

答案 8 :(得分:0)

插图: 您(客户)将包裹发送给女友(服务器),但需要她的签名(200-签名或404-未签名)。您可以检查包裹的状态(0-邮局,4-外送)。包装离开工厂后,将被标记为要交付(4)。但是,如果包裹到达时您的女友不在家,它将以未签名的方式返回邮局(404)。

因此,有可能接收关于包裹的状态(4)和是否递送成功的状态(404)。使用AJAX,可以向服务器发出请求。一旦获得了所需的信息(包括服务器的状态-是否找到了数据/文档),然后在显示任何内容之前将其发送回接收方(客户端)进行分析。