ajax里的status和readystate

先看ajax封装函数

 1   function ajaxFunc(method,url,data,callback) {
 2             var xhr;
 3             if (XMLHttpRequest) {
 4                 xhr = new XMLHttpRequest();
 5             } else {
 6                 xhr = new ActiveXobject('Microsoft.XMLHttp')
 7             }
 8             method = method.toUpperCase();
 9             if(method == 'GET'){
10                 xhr.open('GET',url+'?'+data,true);
11                 xhr.send();
12             }else{
13                 xhr.open('POST',url,true);
14                 xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');//不设置请求头不行吗????
15                 xhr.send(data)
16 
17             }
18    
19             xhr.onreadystatechange = function () {//ajax是异步的,所有必须监听xhr的发送请求状态变化
20                 if (xhr.readyState == 4) {   //0:open完成 1:send完成 2接受到服务器响应 3解析响应中 4解析完成
21                     if (xhr.status == 200) {//404:notfound 500:服务器内部错误 304;取缓存
22                         callback(xhr.responseText)
23                     }
24                 }
25             }
26         }

ajax发送数据后的返回值,为什么要两个状态码都要判断才能够确定responseText是真正的所需数据呢?

readystate:这个是xhr,XMLHttpRequest的实例对象的状态码,表示ajax发送到获取这一过程中所处的不同状态,分别是0到4.

status:是根据http协议,服务器所返回的HTTP头信息代码; 注意的是每次网络请求,可以返回多次这个状态码,每一次xhr的readystate变化,都会返回这种状态码;常见的有200,304.404,500等;

由此可知,单独判断哪一次都不能获取正在的所需数据。

原文地址:https://www.cnblogs.com/dangdanghepingping/p/10166884.html