AJAX

AJAX

Async JavaScript And XML

关键词:异步、JS、XML

实质:用JS发请求和收响应

四个步骤

  1. 创建 HttpRequest 对象(全称是 XMLHttpRequest)

  2. 调用对象的 open 方法

  3. 监听对象的 onreadystatechange 事件

  4. 调用对象的 send 方法(发送请求)

代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
getCSS.onclick = () => {
const request = new XMLHttpRequest(); //创建一个新对象
request.open("GET", "/style.css"); //调用open方法
request.onreadystatechange = () => {
if (request.readyState === 4) {
if (request.status >= 200 && request.status < 300) {
const style = document.createElement("style"); //创建style标签
style.innerHTML = request.response; //填写标签内容
document.head.appendChild(style); //插入head
} else {
alert("加载CSS失败");
}
}
};
request.send();
};

getJS.onclick = () => {
const request = new XMLHttpRequest();
request.open("GET", "/2.js");
request.onreadystatechange = () => {
if (request.readyState === 4) {
if (request.status >= 200 && request.status < 300) {
const script = document.createElement("script");
script.innerHTML = request.response;
document.body.appendChild(script);
} else {
alert("加载JS失败");
}
}
};
request.send();
};

getHTML.onclick = () => {
const request = new XMLHttpRequest();
request.open("GET", "/3.html");
request.onreadystatechange = () => {
if (request.readyState === 4) {
if (request.status >= 200 && request.status < 300) {
const div = document.createElement("div");
div.innerHTML = request.response;
document.body.appendChild(div);
} else {
alert("加载HTML失败");
}
}
};
request.send();
};

getXML.onclick = () => {
const request = new XMLHttpRequest();
request.open("GET", "/4.xml");
request.onreadystatechange = () => {
if (request.readyState === 4) {
if (request.status >= 200 && request.status < 300) {
const dom = request.responseXML;
const text = dom.getElementsByTagName("warning")[0].textContent;
console.log(text.trim());
} else {
alert("加载XML失败");
}
}
};
request.send();
};

getJSON.onclick = () => {
const request = new XMLHttpRequest();
request.open("GET", "/5.json");
request.onreadystatechange = () => {
if (request.readyState === 4) {
if (request.status >= 200 && request.status < 300) {
const object = JSON.parse(request.response);
myName.textContent = object.name;
console.log(object);
} else {
alert("加载JSON失败");
}
}
};
request.send();
};


//加载分页
let n = 1;
getPage.onclick = () => {
const request = new XMLHttpRequest();
request.open("GET", `/page${n + 1}`);
request.onreadystatechange = () => {
if (request.readyState === 4) {
if (request.status >= 200 && request.status < 300) {
const array = JSON.parse(request.response);
array.forEach((item) => {
const li = document.createElement("li");
li.textContent = item.id;
xxx.appendChild(li);
});
n += 1;
} else {
alert("加载下一页失败");
}
}
};
request.send();
};

axios

专门用来操作AJAX的库

  1. axios.get('/xxx') 返回一个 Promise 对象

  2. axios.get('/xxx').then(s, f) 在请求成功的时候调用 s,失败的使用调用 f


AJAX
https://bald3r.wang/2022/06/24/15-AJAX/
作者
Allen
发布于
2022年6月24日
许可协议