AJAX - 状态码



在 AJAX 中,XMLHttpRequest 支持各种属性和方法来执行不同类型的操作。在这些属性和方法中,status 属性/特性是一个状态码,它指定了由 XMLHttpRequest 对象发送的数据请求的整体状态。或者我们可以说状态码是一个三位数字,它表示 XMLHttpRequest 对象发送的请求的结果,例如请求是否成功、遇到错误或重定向等。

因此,status 属性的语法如下:

格式

if(XMLHttpRequestObjectName.status == 200){
   // Body
}

在这里,我们可以使用 XMLHttpRequest 对象访问 status 属性或特性。如果状态码等于 200,则主体内的代码将执行。

状态码

HTTP 状态返回的状态码如下:

成功

状态 消息 描述
200 OK 如果请求正常。
201 已创建 当请求完成并创建了一个新的资源时。
202 已接受 当服务器接受请求时。
204 无内容 当响应主体中没有数据时。
205 重置内容 对于额外的输入,浏览器会清除用于事务的表单。
206 部分内容 当服务器返回指定大小的部分数据时。

重定向

状态 消息 描述
300 多重选择 用于表示链接列表。以便用户可以选择任何一个链接并转到该位置。它只允许五个位置。
301 永久移动 当请求的页面移动到新的 URL 时。
302 已找到 当在不同的 URL 中找到请求的页面时。
304 未修改 URL 未修改。

客户端错误

状态 消息 描述
400 错误请求 服务器无法满足请求,因为请求格式错误或语法无效。
401 未授权 请求需要身份验证,并且用户未提供有效的凭据。
403 禁止 服务器理解了请求,但未满足它。
404 未找到 未找到请求的页面。
405 方法不允许 页面不支持发出请求的方法。
406 不可接受 服务器生成的响应无法被客户端接受。
408 请求超时 服务器超时
409 冲突 由于请求冲突,请求未满足。
410 已消失 请求的页面不可用。
417 异常失败 服务器与 Expect 请求头字段的要求不匹配。

服务器错误

状态 消息 描述
500 内部服务器错误 当服务器在处理请求时遇到错误时
501 未实现 当服务器无法识别请求方法或缺乏满足请求的能力时
502 错误网关 当服务器充当网关并从另一个服务器(上游)获取无效响应时
503 服务不可用 当服务器不可用或宕机时
504 网关超时 当服务器充当网关并且没有及时从另一个服务器(上游)收到响应时。
505 不支持的 HTTP 版本 当服务器不支持 HTTP 协议的版本时。
511 需要网络身份验证 当客户端需要进行身份验证才能访问网络时。

流程图

在下面的代码中,我们从服务器检索数据。因此,我们创建一个名为 showDoc() 的函数。现在,我们通过单击“单击此处”按钮来调用此函数。此函数将使用 XMLHttpRequest() 构造函数创建一个新的 XHR 对象。然后它创建一个回调函数,该函数将处理请求。然后它调用 XHR 对象的 open() 函数以使用 HTTP GET 方法和服务器的 URL 初始化请求。最后,它调用 send() 函数将请求发送到服务器。

因此,当服务器响应请求时,“onreadystatechange”属性将使用 XMLHttpRequest 对象的当前状态调用回调函数。如果状态为 200,则表示请求成功,因此它在屏幕上显示结果并在控制台日志中写入消息。如果状态为 404,则表示服务器遇到错误。因此,我们在控制台日志中收到错误消息。

示例

<!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>

输出

Flow Chart

结论

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

广告