Ajax 的全称是 Asynchronous Javascript And XML(异步 JavaScript 和 XML)。通俗的理解:在网页中利用 XMLHttpRequest 对象和服务器进行数据交互的方式,就是Ajax。
Ajax可以实现网页与服务器之间的数据交互
AJAX不是编程语言,是一种无需重新载入整个页面,能够更新部分网页的技术。
Ajax与使用Form表单和后端进行数据交互的方式比较,具有以下优点:
同步和异步:
XMLHttpRequest
是 AJAX 的基础,XMLHttpRequest API
是Ajax的核心
XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新
使用 XMLHttpRequest (XHR)对象可以与服务器交互, 也就是发送 ajax 请求
前端可以获取到数据,而无需让整个的页面刷新。
这使得 Web 页面可以只更新页面的局部,而不影响用户的操作
ajax 请求是一种特别的 http 请求
对服务器端来说, 没有任何区别, 区别在浏览器端
浏览器端发请求: 只有 XHR 或 fetch 发出的才是 ajax 请求, 其它所有的都是非 ajax 请求
XMLHttpRequest对象的常见属性如下:
onReadyStateChange
- 定义了当 readyState 属性发生改变时所调用的函数.readyState
- 表示请求的状态。范围值从0
到4
。
0
- 服务器连接已建立,未调用open()。4
- 请求已完成,且响应已就绪。status
- HTTp状态码
statusText
- 返回状态文本(例如 “OK” 或 “Not Found”)reponseText
- 以文本形式返回响应。responseXML
- 以XML形式返回响应。XMLHttpRequest对象的重要方法如下:
方法 | 描述 |
---|---|
void open(method, URL, async) | 规定请求的类型、URL 以及是否异步处理请求 |
void send(string) | 将请求发送到服务器,string:仅用于 POST 请求 |
setRequestHeader(header,value) | 添加请求标头 |
实现步骤
想要实现ajax需要四个步骤
// ajax的基本请求步骤
// 1.创建对象
const xhr = new XMLHttpRequest();
// 2.初始化
xhr.open('Get', 'http....');
// 发送请求
xhr.send();
// 处理响应回调
xhr.onreadystatechange = function(){
console.log(`xhr`, xhr)
// 返回状态码
if(xhr.readyState === 4){
// 判断响应状态码为2xx
if(xhr.status >= 200 && xhr.status <= 300){
// 控制台输出响应体
console.log(`xhr.response`, xhr.response)
}else{
// 输出响应状态码
console.log(`xhr.status`, xhr.status)
}
}
}
// Promise处理ajax请求
const p = new Promise((resolve, reject) => {
// ajax的基本请求步骤
// 1.创建对象
const xhr = new XMLHttpRequest();
// 2.初始化
xhr.open('Get', 'http....');
// 发送请求
xhr.send();
// 处理响应回调
xhr.onreadystatechange = function(){
console.log(`xhr`, xhr)
// 返回状态码
if(xhr.readyState === 4){
// 判断响应状态码为2xx
if(xhr.status >= 200 && xhr.status <= 300){
// 控制台输出响应体
// console.log(`xhr.response`, xhr.response)
resolve(xhr.response)
}else{
// 输出响应状态码
// console.log(`xhr.status`, xhr.status)
reject(xhr.status)
}
}
}
});
// 调用then方法
p.then(value => {
console.log(value);
},reason => {
console.warn(reason)
})