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>

Output

flow chart

Conclusion

因此,这些是 XMLHttpRequest 使用的状态代码。这些状态代码表示请求的状态。根据这些状态代码,我们可以在请求上执行操作。现在,在下一篇文章中,我们将学习 XMLHttpRequest 如何处理错误。