首页 > AJAX问题:readyState应该如何理解?

AJAX问题:readyState应该如何理解?

我在W3school自学AJAX,目前学到readyState这节。
有两个问题:
1.我不太理解readyState代表的是服务器的状态,还是浏览器的状态?
2.如果readyState为4的时候,代表“请求已完成,且响应已就绪”,那就应该可以使用responseText了吧,为什么还要加上status==200?
谢谢!

xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {//既然readyState==4代表请求完成 那为何还要status==200?
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }

说的真好是是是是是是是是是是是是是是是


200是服务器的响应状态码,即是数据已从服务器获取回来了。
4是浏览器解析服务器返回回来的数据,指数据已解析完成,可以使用。


readyState应该是指浏览器端的状态。因为当http code等于200的时候代表客户端请求服务端成功,所以需要加上这个判断。


readyStatus是xhr对象返回的状态,是浏览器状态,值为4的时候表示整个请求流程已经完成

status则是请求链接的http状态码,具体来说是
200正常,301重定向,403禁止访问,404页面不存在,500服务器无响应等等

xhr只关心请求过程是否完成,不关心返回结果。

Http状态码


理解的顺序换一下,先看 xhr.status==200代表的意思,代表的是你从服务器中成功请求到了内容。之后再来看readyState,因为请求成功的时候(xhr.status==200),内容不一定就可以在浏览器访问了,这时候我再附加一个条件,只有内容能在浏览器上访问(readyState==4)的时候再来操作。

我觉得理解的顺序应该是这样的


指浏览器内那个请求的状态

readyState为4仅说明"把response完整地接收到了", 不表示"response里没有错"

即使服务器端返回404, 只要浏览器完整地拿到回复, 还是会把readyState变成4

【热门文章】
【热门文章】