AJAX
Async JavaScript And XML
关键词:异步、JS、XML
实质:用JS发请求和收响应
四个步骤
- 创建 HttpRequest 对象(全称是 XMLHttpRequest)
- 调用对象的 open 方法
- 监听对象的 onreadystatechange 事件
- 调用对象的 send 方法(发送请求)
代码示例:
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();
};