ajax请求时 会先创建一个 ajax请求的 实例化对象 -- xhr

这个 实力化对象 -- xhr 中 JavaScript定义了很多属性和函数方法

1. readyState  ajax状态码 表示 ajax  请求进行的步骤

0: 创建了ajax对象
1: 设定了 open() 设定了传参方式和传递对象url地址
2: 发送了 请求
3: 接收了 响应报文 , 在 响应报文中 有 响应体 响应体是请求结果
并且正在从响应报文中,解析响应体 内容
4: 响应报文解析完毕,响应体内容,已经存储在 response 和 responseText中可以获取了

readyState 状态码 为 4 的时候 , 表示 请求 已经结束了

但是不能表示请求已经成功了
只是执行步骤的状态码

2. response 和 responseText

请求 解析出来的 响应体 内容
如果请求成功,是响应体内容
如果请求失败,一般是报错信息

3.status        http状态码  范围 是 100 - 599  表示 请求 状态

100 - 199  表示 请求正在连接中,可以继续执行操作
200 - 299  表示 请求成功
300 - 399  表示 是重定向请求
重定向  我想去A  但是 实际上 先去了 B 从 B 再去了 A
400 - 499  表示 请求失败 失败原因在 客户端
500 - 599  表示 请求失败 失败原因在 服务器

4.statusText   http状态秒数

通过文字内容,描述请求状态

ajax兼容 低版本 IE 浏览器

创建: ajax 对象

标准浏览器:

xhr = new XMLHttpRequest();

低版本IE浏览器

xhr = new ActiveXObject('Microsoft.XMLHTTP');

兼容语法

    xhr = {};
    if(XMLHttpRequest){
        xhr = new XMLHttpRequest();
    }else{
        xhr = new ActiveXObject('Microsoft.XMLHTTP');
    }

接收响应体:

标准浏览器

xhr.onload = ()=>{}

低版本IE

没有onload方法

兼容语法

    // 当 readyState ajax请求状态改变时 执行的程序
    xhr.onreadystatechange = function(){
        // ajax状态码为4,请求结束 并且 http状态码是 200-299,请求成功
        if( readyState === 4 && ( status >= 200 && status <= 299 ) ){
        // 请求成功执行的程序
        }
    }
    // 正则表达式,判断 在 200 - 299 之间
    // /2\d{2}/.test( status )

ajax兼容dome

    const oBtn = document.querySelector('button');
    oBtn.addEventListener('click' , ()=>{
        // 1,创建 xhr对象
        let xhr = {};

        if(XMLHttpRequest){
            xhr = new XMLHttpRequest();
        }else{
            xhr = new ActiveXObject('Microsoft.XMLHTTP');
        }

        // 2,设定open()
        xhr.open('get' , './demo.php');

        // 3,发送send()
        xhr.send()

        // 4,接收
        xhr.onreadystatechange = ()=>{
            if(xhr.readyState === 4 && /2\d{2}/.test(xhr.status) ){
                console.log( JSON.parse(xhr.response) );
            }
        }
    })

一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。