40
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 == 4和有什么区别xmlhttp.status == 200

4

9 回答 9

47

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

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

于 2013-07-10T02:27:12.807 回答
26

status 指示服务器响应是否正常。
一般而言,当您获得身份时

500 - 599:服务器出错

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

300 - 399:然后存在重定向

200 - 299:那么它是正确的并且

100 - 199:表示信息消息

然后 status==200 给你一个消息,服务器说:“嘿,我做的工作!”

于 2013-07-10T02:26:15.127 回答
23

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

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

ifreadyState === 4status === 200, 表示一切正常。ajax 调用的工作方式相同。

于 2014-09-28T17:55:12.477 回答
13

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

0:请求未初始化

1:服务器连接建立

2:收到请求

3:处理请求

4:请求完成,响应就绪状态 200:“OK” 404:找不到页面

于 2015-10-21T10:04:43.893 回答
3

考虑您的服务器端代码有错误。您请求页面,当服务器完成流式传输响应时,readyState 将为 4,但状态代码将为 500(或 500 左右)。

于 2013-07-10T02:24:54.420 回答
3

readyState 保存 XMLHttpRequest 的状态。

0:请求未初始化

1:服务器连接建立

2:收到请求

3:处理请求

4:请求完成,响应就绪

status 返回请求的状态号

200:“好的”

403:“禁止”

404:“未找到”

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

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

于 2018-09-25T17:58:59.857 回答
1

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

于 2013-07-10T02:25:16.670 回答
0

onreadystatechange=function() 仅在我们从服务器获得响应时执行。如果我们从服务器得到响应,则意味着我们的请求已完成,由 4 指示。而 200 告诉我们它的状态是正确的。“4: request finished and response is ready status 200” 如果找不到页面,我们会得到状态 404。

于 2017-06-09T00:24:30.590 回答
0

说明:您(客户端)向您的女朋友(服务器)发送一个包裹,但需要她的签名(200 - 签名或 404 - 未签名)。您可以检查包裹的状态(0 - 在邮局,4 - 送达)。一旦包裹离开设施,它将被标记为交付 (4)。但是,如果包裹到达时您的女朋友不在家,它将以未签名的形式返回邮局(404)。

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

于 2018-12-20T22:13:16.743 回答