Ajax全称Asynchronous JavaScript and XML。ajax并不是一种新的编程语言,而是指运用一系列技术集合(例如XML、CSS、JavaScript和DOM等技术)将页面应用增量更新呈现在用户界面上,而不是刷新整个界面。
目前ajax主要有基于xhr的ajax技术和基于fetch的ajax技术。
XHR全称XMLHttpRequest,XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
在实际开发中很少使用原生XHR对象,一般都是使用封装库,例如axios,因此这里只简单介绍一下基本使用方法。
const xhr = new XMLHttpRequest();
const url = "<http://localhost:3333/>";
xhr.open("GET", url);
xhr.setRequestHeader("Authorization", "123"); // 设置请求头
xhr.withCredentials = true; // 携带cookie
xhr.send(); // 发送请求
const xhr = new XMLHttpRequest();
const url = "<http://localhost:3333/>";
xhr.open("Post", url);
xhr.setRequestHeader("Authorization", "123");
xhr.setRequestHeader("content-tyoe", "application/json"); // 设置编码格式
xhr.withCredentials = true;
xhr.send({arg: 'hello world'}); // 添加参数到请求体重
由于http请求通常是异步的,一般不会使用同步的xhr,所以我们不能直接获取响应结果,需要使用xhr对象的onload函数,这和事件处理程序写法很相似。
xhr.onload = function(){
// 请求完成时
if(xhr.readyState === 4){
console.log(xhr.response);
}
}
Axios 是一个基于 promise 的网络请求库,可以用于浏览器和 node.js,是目前最流行的网络请求库之一。
axios的优点有