Ajax 简明教程
AJAX - Status Codes
在 AJAX 中,XMLHttpRequest 支持各种属性和方法来执行不同类型的操作。在这些属性和方法中,状态属性/特性是一个状态代码,它指定了 XMLHttpRequest 对象发送的数据请求的整体状态。或者我们可以说状态代码是一个三位数字,它表示 XMLHttpRequest 对象发送的请求的结果,比如请求是否成功、遇到错误或被重定向等。
因此,状态属性的语法如下−
Format
if(XMLHttpRequestObjectName.status == 200){
// Body
}
在这里,我们可以使用 XMLHttpRequest 对象访问状态属性。如果状态代码等于 200,则会执行 body 中的代码。
Status Codes
HTTP 状态返回的状态码如下:
Successful
Status |
Message |
Description |
200 |
OK |
如果请求可以。 |
201 |
Created |
当请求完成并创建了一个新资源。 |
202 |
Accepted |
当请求被服务器接受。 |
204 |
No Content |
当响应主体中没有数据。 |
205 |
Reset Content |
对于其他输入,浏览器会清除用于事务的表单。 |
206 |
Partial Content |
当服务器返回指定大小的部分数据。 |
Redirection
Status |
Message |
Description |
300 |
Multiple Choices |
它用于表征链接列表。因此,用户可以选择任何一个链接并前往该位置。它只允许五个位置。 |
301 |
Moved Permanently |
当请求的页面移动到新 URL。 |
302 |
Found |
当请求的页面在不同的 URL 中找到。 |
304 |
Not modified |
URL is not modified. |
Client Error
Status |
Message |
Description |
400 |
Bad Request |
服务器无法满足请求,因为请求格式错误或语法无效。 |
401 |
Unauthorised |
请求需要身份验证,并且用户未提供有效凭证。 |
403 |
Forbidden |
服务器了解该请求,但无法完成它。 |
404 |
Not Found |
找不到请求的页面。 |
405 |
Method Not Allowed |
通过该请求进行请求的方法不受该页面支持。 |
406 |
Not Acceptable |
客户无法接受服务器生成的响应。 |
408 |
Request Timeout |
Server timeout |
409 |
Conflict |
请求由于请求中的冲突而未完成。 |
410 |
Gone |
请求的页面不可用。 |
417 |
Exception Failed |
服务器不匹配 Expect 请求头字段的要求。 |
Server Error
Status |
Message |
Description |
500 |
Internal Server Error |
当服务器在处理请求时遇到错误 |
501 |
Not Implemented |
当服务器无法识别请求方法或无法满足请求 |
502 |
Bad Gateway |
当服务器充当网关并从另一台服务器(上游)中恢复无效响应 |
503 |
Service Unavailable |
当服务器不可用或宕机 |
504 |
Gateway Timeout |
当服务器作为网关且未及时从另一台服务器(上游)收到响应时。 |
505 |
HTTP Version Not Supported |
当服务器不支持 HTTP 协议版本时。 |
511 |
Network Authentication Required |
当客户端需要验证以获取对网络的访问权限时。 |
Flow Chart
在以下代码中,我们从服务器中检索数据。因此,我们创建一个名为 showDoc() 的函数。现在,我们通过单击“单击此处”按钮来调用此函数。此函数将使用 XMLHttpRequest() 构造函数创建一个新的 XHR 对象。然后它创建一个回调函数,它将处理请求。然后它调用 XHR 对象的 open() 函数,使用 HTTP GET 方法和服务器的 URL 初始化请求。最后,它调用 send() 函数向服务器发送请求。
因此,当服务器响应请求时,“onreadystatechange”属性使用 XMLHttpRequest 对象的当前状态调用回调函数。如果状态为 200,则表示请求成功,因此它在屏幕上显示结果并在控制台日志中写入消息。如果状态为 404,则表示服务器遇到错误。因此,我们在控制台日志中收到一条错误消息。
Example
<!DOCTYPE html>
<html>
<body>
<script>
function ShowDoc() {
// Creating XMLHttpRequest object
var myhttp = new XMLHttpRequest();
// Creating call back function
myhttp.onreadystatechange = function() {
// Checking the status of the response
// This will proceed when the response is successful
if (this.status == 200){
console.log("Found the requested data")
document.getElementById("example").innerHTML = this.responseText;
}
// This will proceed when the error is found
else if(this.status == 404){
console.log("Found error");
}
};
// Open the given file
myhttp.open("GET", "https://jsonplaceholder.typicode.com/todos/3", true);
// Sending the request to the server
myhttp.send();
}
</script>
<p>Please click on the button to fetch data</p>
<button type="button" onclick="ShowDoc()">Click Here</button>
<div id="example"></div>
</body>
</html>