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 == 200
? xmlhttp.readyState == 4
和xmlhttp.status == 200
之间有什么区别?
答案 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 === 4
和status === 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:“未找到”
有关响应消息的详细信息 访问
答案 8 :(得分:0)
插图: 您(客户)将包裹发送给女友(服务器),但需要她的签名(200-签名或404-未签名)。您可以检查包裹的状态(0-邮局,4-外送)。包装离开工厂后,将被标记为要交付(4)。但是,如果包裹到达时您的女友不在家,它将以未签名的方式返回邮局(404)。
因此,有可能接收关于包裹的状态(4)和是否递送成功的状态(404)。使用AJAX,可以向服务器发出请求。一旦获得了所需的信息(包括服务器的状态-是否找到了数据/文档),然后在显示任何内容之前将其发送回接收方(客户端)进行分析。