ajax 内部是咋写的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
let oBtn = document.getElementById("btn1");
oBtn.onclick = function () {
let xhr = new XMLHttpRequest();

//连接请求
xhr.open("GET", "1.php?a=12&b=5", true);

//发送请求
xhr.send();

//接收请求
xhr.onreadystatechange = function () {
//readyState的值表示目前通信处于什么状态
//0 初始化-刚刚创建
//1 以连接
//2 已发送
//3 已接收-头
//4 已接收-主体内容
alert(xhr.readyState);
//不管请求成果或者失败,都会执行完4的内容
//这时候需要用到http状态码了
};
};

http 状态码(status)

游览器和服务器之间通过数字来表明状态,这个数字就是 http 状态码

1xx 消息

2xx 成功

3xx 重定向:原来的地址更改到了新的地址

301:永久重定向-游览器不会再次请求老的地址

302:临时重定向-游览器下次还会请求老地址

304:缓存

4xx 请求错误(客户端)

5xx 服务端错误

6xx 拓展

所以,想要知道是否成功,就要看状态码是否是 2xx 或者 304

1
2
3
4
5
6
7
8
9
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if ((xhr.status >= 200 && xhr.status <= 300) || xhr.status == 304) {
alert("成功");
} else {
alert("失败");
}
}
};

image

改成 1.php 就能成功了

image

如果使用 post 请求,则需要添加一条额外的语句

image

放在 open 和 send 之间