Skip to content

AJAX

Asynchronous JavaScript And XML。通过Ajax进行网络请求,可以动态获取服务端数据,从而局部刷新页面,拥有更好的用户体验。并且Ajax使用新的线程进行网络请求,不会阻塞页面的解析和渲染,性能更好。

1. Ajax的使用方法

js
# 创建XHR对象
let xhr = new XMLHttpRequest();
# 构建XHR请求
xhr.open(method,url,isAsync,user,password);
# 需要的话,设置请求头部字段
xhr.setRequestHeader('Accept','*/*');
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
# 监听readystatechange事件
xhr.onreadystatechange=function(){
    if(xhr.readyState === 4){
        if(xhr.status === 200){
            console.log("发送成功!");
        }else{
        console.log("发送失败");
        }
    }
}
# 发送XHR请求,post请求时,content为请求数据:序列化参数或者FormData对象
xhr.send(content);

2. Ajax XHR对象的属性、方法

js
{
    readyState:0|1|2|3|4; //xhr对象的状态, 0:xhr对象创建,未初始化1:open方法调用,2:send方法调用,此时可以获取到头部信息,3:内容正在下载中,4:下载成功。
    status:1XX|2XX|3XX|4XX|5XX,//服务器响应的 http 状态码, 1XX:需要继续处理,2XX:响应成功,3XX:重定向,4XX:客户端错误,5XX:服务器错误。
    statusText:'ok',// 状态码简短描述
    responseText,// 服务器响应text内容
    responseXML,// 服务器响应XML内容
    responseType:'arrrybuffer', // 设置服务器响应内容类型。
    timeout:2000,// 超时时间2000毫秒,和setRequestHeader()一样需要放在open和send之间。
    withCredentials:true,// 跨域CORS默认不发送cookie,如想支持可设置为true,并且服务端设置响应头部Access-Control-Allow-Origin,Access-Control-Allow-Credentials:true。
    open(method,url,isAsync,user,password),// method:请求方法get|post|head|put|delete,url:请求地址,isAsync:是否异步,默认true,user:认证用户名,password:认证密码。
    send(data),
    setRequestHeader(header,value),// 设置请求头部信息。
    onreadystatechange,// 监听readystatechange事件
    onload,// onload事件
    upload,// 上传时的upload对象,可以监测上传相关的事件,例如:onprogress
}

3. Ajax事件

事件名描述
onreadystatechange当xhr对象的状态码readyState改变时触发
onloadstart开始获取数据
onprogress数据获取中
onabort数据获取被取消
onerror数据获取失败
ontimeout数据获取超时
onloadend数据获取结束(不管成功失败)
onload数据获取成功

根据 MIT 许可证发布