Ajax

简介

Ajax (Asynchronous JavaScript and XML) 主要用来加载数据,避免刷新整个页面。
XMLHttpRequestAjax 的基础。所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject )。

创建 XMLHttpRequest 对象

myAjax = new XMLHttpRequest();

发送请求

XMLHttpRequest 对象进行 HTTP 请求前必须通过 open 初始化, open 接受五个参数,分别为请求方法、请求链接、异步标识、账号和密码用以服务端验证

myAjax.open(Method, URL, Asynchronous, UserName, Password);
  • method :请求的类型;GET 或 POST。
  • url :文件在服务器上的位置。
  • async :true(异步)或 false(同步)。

在成功初始化请求之后, XMLHttpRequest 对象的 setRequestHeader 方法可以用来设置请求头:

myAjax.setRequestHeader(key, value);

调用 open 方法后,就可以通过调用 send 方法按照 open 方法设定的参数将请求进行发送

myAjax.send(data);

open 方法设定发送的方式为异步请求时, onreadystatechange 事件监听器将自动在 XMLHttpRequest 对象的 readyState 属性改变时被触发

switch (readyState) {
    case 1:
        break; //当 open 方法被成功调用,readyState 为 1
    case 2:
        break; //当 send 方法被调用,readyState 属性被置为 2
    case 3:
        break; //HTTP 响应内容开始加载,readyState 属性被置为 3
    case 4:
        break; //HTTP 响应内容结束加载,readyState 属性被置为 4
}

如果 XMLHttpRequest 对象的 readyState 属性还没有变成 4, abort 可以终止请求。这个方法可以确保异步请求中的回调不被执行。

myAjax.abort();

示例

function ajax(url, method = "GET", data = null, async = true) {
    // 声明 XMLHttpRequest 
    // 在 IE5 和 IE6 中需要使用 ActiveXObject
    const XHR = XMLHttpRequest;
    // 创建 XMLHttqRequest
    XHR = new XMLHttpRequest()
    // 设置请求状态改变时执行的函数
    XHR.onreadystatechange = function() {
        if (XHR.readyState === 4) console.log( `响应状态:${XHR.status}` , "FINISH") //XHR.responseText 为响应体
    }
    // 初始化请求参数
    XHR.open(method, url, async)
    // 发起请求
    XHR.send(data)
}

ajax("https://www.baidu.com");
ajax("https://www.baidu.com", "POST", "s=str");

服务器响应

使用 XMLHttpRequest 对象的 responseTextresponseXML 属性获取响应数据。

  • responseText :获得字符串形式的响应数据。
  • responseXML :获得 XML 形式的响应数据。

当服务端的响应不是 XML 时,使用 responseText 属性。

document.getElementById("id").inndeHTML = myAjax.responseText;

转载规则

  目录