ajax原理:浏览器调用XHR — 浏览器继续执行 — XHR向服务器发送请求 — 服务器返回数据给XHR — XHR向浏览器通知结果 — 浏览器获取数据渲染页面
const baseUrl = "https://xxxxxx.xxxxxx.cn";
function ajax(parameters) {
parameters.method = parameters.method.toUpperCase();
parameters.url = baseUrl + parameters.url;
let ajaxObj;
//1.创建XMLHttpRequest实例对象(IE7开始支持XMLHttpRequest,可不做兼容)
if (window.XMLHttpRequest) {
ajaxObj = new XMLHttpRequest();
} else {
ajaxObj = new ActiveXObject("Microsoft.XMLHTTP"); //(默认版本的XMLHTTP,XMLHTTP主要用来传输数据)
}
//2.调用open方法设置基本请求信息
ajaxObj.open(parameters.method, parameters.url, true); //(GET/POST/PUT/DELETE,url,是否异步)
//设置请求头
//ajaxObj.setRequestHeader("token", "8fc1f353-a677-4051-8cb9-25fb83b2a40a"); //(属性的名称,属性的值)
//3.设置发送的数据,发送请求
ajaxObj.send(parameters.data); //(请求参数)
//4.注册监听的回调函数,接收请求
ajaxObj.onreadystatechange = function () {
//0 = 代理被创建,但尚未调用 open() 方法
//1 = open() 方法已经被调用,可以通过setRequestHeader()设置请求头
//2 = send() 方法已经被调用,并且响应头可获得
//3 = 接收中
//4 = 接收完成
if (ajaxObj.readyState == 4) {
if (ajaxObj.status == 200) {
//5.调用回到函数,返回数据,更新页面
parameters.success(JSON.parse(ajaxObj.responseText));
} else {
parameters.error();
}
}
};
}
//调用
// ajax({
// method,
// url,
// data,
// success(res) {},
// error(){}
// });