AJAX的核心对象是XMLHttpRequest, 这个对象在目前的所有浏览器都支持,只是IE6 和 IE5的写法不一样而已。

使用AJAX一般按照下面 4个步骤 使用即可。

一. 步骤1:创建XMLHttpRequest对象

​ 这个对象从IE5开始支持,后来各大浏览器都进行了跟进。IE7+和chrome、firefox写法一样,IE6以前的浏览器一种写法。实际开发中,一般使用如下的兼容写法。

function createXHR() {
  if(window.XMLHttpRequest) {
    //标准浏览器创建XMLHttpRequest对象的方式
      return new XMLHttpRequest();
  }else{
    //IE5和IE6的创建方式
     return new ActiveXObject("Microsoft.XMLHTTP");
  }
}

二. 步骤2:调用open方法

/*调用open方法
* 参数1:请求方法,一般是get或post
* 参数2:请求是url
* 参数3:是否为异步。true表示异步,默认是true异步。
*/
xhr.open("GET", "msg.json", true);

注意:

  • URL相对于执行代码的当前页面(当然也可以使用绝对路径);
  • 调用 open() 方法并不会真正发送请求,而只是启动一个请求以备发送。
  • 如果使用绝对路径,则一定要和当前页面的协议、主机和端口完全一致,否则会出现错误。

三. 步骤3:监听请求状态(onreadystatechange)

xhr.onreadystatechange监听请求状态,根据状态来确定数据获得之后要做的事情。

xhr.readyState的值保存了xhr的状态。一共有5种状态,每个状态用1个整数来表示

  • 0 未初始化。对象new出来了,但是还没有调用open方法
  • 1 启动。 已经调用open,但是还没有调用send方法
  • 2 发送。 已经send方法,但是还没有接收到相应
  • 3 接收。 已经开始接收数据,但是还没有完全接收。
  • 4 完成。 已经完全接收数据。

作为开发者,我们一般只关注 第4种 状态。

//监听状态
xhr.onreadystatechange = function () {
      // 如readyState的值为4,表示已经接收完数据,可以开始对数据处理。
    if(xhr.readyState == 4){
          // xhr.status 保存了服务的响应码,  200表示正常响应  
        if(xhr.status == 200){
            alert(xhr.responseText);
        }
    }
}

注意:步骤2和步骤3可以调换顺序。


四. 步骤4:调用send方法发送请求

//send方法才是真的的发起网络请求。 参数:请求的时候向服务区传递的参数。 如果是get请求,直接传入null即可。
xhr.send(null);
Copyright © 李振超 2018 all right reserved,powered by Gitbook
该文件最后修订时间: 2018-10-18 03:20:27

results matching ""

    No results matching ""