xhr的readyState和status

XMLHttpRequest(XHR)对象中的readyState和status用于监控异步 HTTP 请求的状态。它们分别表示请求的当前阶段和服务器的响应状态。

readyState 用于判断请求所处的阶段,确保数据完全接收。
status 用于判断请求的结果状态(如200表示成功,404表示资源不存在)。

文章目录

    • readyState 属性
    • status 属性
      • 1xx: 信息性状态码
      • 2xx: 成功状态码
      • 3xx: 重定向状态码
      • 4xx: 客户端错误状态码
      • 5xx: 服务器错误状态码
    • 例子

readyState 属性

readyState 属性表示请求的当前状态,取值范围从 0 到 4。每个值的含义如下:

  • 0: UNSENT
    请求未初始化,尚未调用 open() 方法。

  • 1: OPENED
    请求已被初始化,调用了 open() 方法,但尚未调用 send() 方法。

  • 2: HEADERS_RECEIVED
    请求已发送,服务器响应头已被接收,但响应体尚未接收。

  • 3: LOADING
    响应体正在接收中。可以接收到部分数据。

  • 4: DONE

      请求操作已经完成。这意味着数据传输已经彻底完成或失败。
    

    请求已完成,响应已完全接收。此时可以通过 responseTextresponseXML 属性访问响应数据。

在这里插入图片描述

status 属性

1xx:信息响应类,这些状态码表示请求已被接收并正在继续处理。
2xx:处理成功响应类,这些状态码表示请求已成功处理。
3xx:重定向响应类,这些状态码表示客户端需要进一步的操作才能完成请求。
4xx:客户端错误,这些状态码表示请求有误,客户端需修改请求。
5xx:服务端错误,这些状态码表示服务器在处理请求时发生了错误。

1xx: 信息性状态码

这些状态码表示请求已被接收并正在继续处理。

  • 100 Continue
    客户端应继续发送请求。通常用于在发送大型请求时,客户端可以先发送请求的头部,然后等待服务器的确认。

  • 101 Switching Protocols
    服务器已理解客户端的请求,并将其协议更改为客户端所请求的协议。

2xx: 成功状态码

这些状态码表示请求已成功处理。

  • 200 OK
    请求成功,服务器返回所请求的数据。

  • 201 Created
    请求成功并创建了新的资源,通常用于 POST 请求。

  • 202 Accepted
    请求已接受,但尚未处理。此状态通常用于异步处理。

  • 203 Non-Authoritative Information
    服务器成功处理了请求,但返回的信息可能来自另一来源。

  • 204 No Content

      在更新一个资源后,如果不需要向客户端返回任何新的数据
    

    请求成功,但没有返回任何内容,常用于 DELETE 请求。

  • 205 Reset Content
    请求成功,要求客户端重置文档视图。

  • 206 Partial Content
    服务器成功处理了部分 GET 请求,通常用于下载大文件时的断点续传。

3xx: 重定向状态码

这些状态码表示客户端需要进一步的操作才能完成请求。

  • 300 Multiple Choices
    请求的资源有多种选择,用户可以选择其中一个。

  • 301 Moved Permanently
    请求的资源已被永久移动到新 URI,未来的请求应使用新 URI。

  • 302 Found
    请求的资源临时移动到新 URI,客户端应继续使用原 URI。

  • 303 See Other
    请求的响应可在另一个 URI 下找到,客户端应使用 GET 方法请求该 URI。

  • 304 Not Modified
    资源未修改,可以使用缓存的版本。常用于条件请求。

  • 305 Use Proxy
    请求的资源必须通过代理访问。

  • 307 Temporary Redirect
    请求的资源临时移动到新 URI,客户端应使用相同的方法进行请求。

  • 308 Permanent Redirect
    请求的资源已被永久移动,未来请求应使用新 URI,且应使用相同的方法进行请求。

4xx: 客户端错误状态码

这些状态码表示请求有误,客户端需修改请求。

  • 400 Bad Request
    请求无效,服务器无法理解。

  • 401 Unauthorized
    请求未授权,需提供身份验证。

  • 402 Payment Required
    该状态码保留用于将来的需求,目前尚未广泛使用。

  • 403 Forbidden
    服务器理解请求,但拒绝执行,用户无权访问请求的资源。

  • 404 Not Found
    请求的资源未找到。

  • 405 Method Not Allowed
    请求方法不被允许,资源不支持该方法。

  • 406 Not Acceptable
    请求的资源无法满足请求头中指定的条件。

  • 407 Proxy Authentication Required
    需要代理身份验证。

  • 408 Request Timeout
    服务器在等待请求时超时。

  • 409 Conflict
    请求无法完成,因为存在冲突。

  • 410 Gone
    请求的资源已被永久删除,且没有转发地址。

  • 411 Length Required
    服务器要求请求中指定 Content-Length。

  • 412 Precondition Failed
    请求中的某个条件未满足。

  • 413 Payload Too Large
    请求的有效负载太大,服务器无法处理。

  • 414 URI Too Long
    请求的 URI 太长,服务器无法处理。

  • 415 Unsupported Media Type
    请求的媒体类型不被服务器支持。

  • 416 Range Not Satisfiable
    请求的范围无效,服务器无法满足请求。

  • 417 Expectation Failed
    服务器无法满足 Expect 请求头中的期望。

5xx: 服务器错误状态码

这些状态码表示服务器在处理请求时发生了错误。

  • 500 Internal Server Error
    服务器发生意外错误,无法完成请求。

  • 501 Not Implemented
    服务器不支持请求的方法。

  • 502 Bad Gateway
    服务器作为网关或代理时收到无效响应。

  • 503 Service Unavailable
    服务器当前无法处理请求,通常是由于过载或维护。

  • 504 Gateway Timeout
    服务器作为网关或代理时,未能及时从上游服务器获取请求。

例子

var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://api.example.com/data', true);

xhr.onreadystatechange = function() {
    if (xhr.readyState === 4) { // DONE
        switch (xhr.status) {
            case 200:
                console.log('Success:', xhr.responseText);
                break;
            case 404:
                console.error('Error 404: Not Found');
                break;
            case 500:
                console.error('Error 500: Internal Server Error');
                break;
            default:
                console.error('Error:', xhr.status, xhr.statusText);
        }
    }
};

xhr.send();

以上代码展示了如何根据不同的 HTTP 状态码进行不同的处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/904645.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络IP地址分类,子网掩码,子网划分复习资料

IP 地址的概念 IP 地址是独立于硬件地址的逻辑地址,它是由软件提供的地址。 IP 地址是网络层地址。 IP 编址方案和分类 IP 地址由 32 位二进制数构成,分为前缀(网络地址)和后缀(主机地址) 同一网段中每台计算机的 IP 地址是唯一的网络地址的分配全球…

【Stable Diffusion】

1、SD 模型 安装完SD软件后,必须搭配基础模型才能使用。 不同的基础模型,其画风和擅长的领域会有侧重。 Checkpoint大模型 大模型是 SD 的核心,用来控制生成图片的整个画面风格走势。 出图前要选择好合适的大模型,比如有些擅长…

WPF+MVVM案例实战(一)- 设备状态LED灯变化实现

文章目录 1、项目创建2、UI界面布局1. MainWindow.xaml2、颜色转换器实现2.MainViewModel.cs 代码实现3、运行效果4.源代码下载1、项目创建 打开 VS2022 ,新建项目 Wpf_Examples,创建各层级文件夹,安装 CommunityToolkit.Mvvm 和 Microsoft.Extensions.DependencyInjectio …

node集成redis (教学)

文章目录 前言一、安装redis二、可视化界面测试连接1.vscode安装插件 三、node代码编写1.先安装两个库(redis和ioredis)2.测试连接 (前提是你的redis服务器要启动起来) 总结 前言 在Node.js中集成ioredis是一个常见的做法&#x…

Java MySQL-JDBC编程

文章目录 初始JDBCJDBC的工作原理 初始MavenMaven入门简介修改Maven的配置文件在idea中查看当前的maven使用在当前Maven工程中加载数据库驱动 DriverManager连接方案注册一个驱动创建一个连接获取一个操作SQL的对象创建SQL查询获取结果集遍历结果集输出结果关闭资源以及完整代码…

TCP全连接队列与 tcpdump 抓包

🍑个人主页:Jupiter. 🚀 所属专栏:计算机网络高效通关之路 欢迎大家点赞收藏评论😊 目录 listen第二个参数详解 全连接队列与半连接队列半开放连接队列(SYN队列)全连接队列(接受队列…

20241030在荣品PRO-RK3566开发板的适配Rockchip原厂的buildroot的时候配置DTS中的电源域

20241030在荣品PRO-RK3566开发板的适配Rockchip原厂的buildroot的时候配置DTS中的电源域 2024/10/30 17:38 请问 RK3566开发板上的 电源配置 和 DTS文件是如何对应的? 底板原理图 PRO-RK3566-B-20210329原理图.pdf vccio4-supply 是1.8V。 对不上呀? Z:…

【Java】数组的定义与使用

数组的定义与使用 1. 数组的基本概念1.1 为什么要使用数组1.2 什么是数组1.3 数组的创建及初始化1.3.1 数组的创建1.3.2 数组的初始化 1.4 数组的使用1.4.1 数组中元素访问1.4.2 遍历数组 2. 数组是引用类型2.1 初始JVM的内存分布2.2 基本类型变量与引用类型变量的区别2.3 再谈…

活动回顾丨艾体宝《开源软件供应链安全的最佳实践》线下研讨会圆满落幕!

10月,艾体宝联合Mend成功举办了一场主题为“开源软件供应链安全最佳实践”的研讨会。此次活动吸引了众多业内专家、技术领袖和企业代表参与,共同探讨在当今数字化转型浪潮中,企业如何应对开源软件供应链安全的挑战。会议围绕三大核心议题展开…

复现第一周24

1.[SWPUCTF 2021 新生赛]gift_F12 1)打开题目 2)看源码 3)直接ctrl+f搜索flag 2.[SWPUCTF 2021 新生赛]nc签到 1)开题 2)下载附件用记事本打开 3)打开kali使用nc连接代码 输入l\s命令绕过黑名…

如何写出爆款脚本,很多人都忽略了这一项——口语化

不是每次写的视频脚本都绞尽脑汁吗? 你让观众觉得在和你‘聊天’,可一开写就生长硬、平淡、没有吸引力? 其实,只要掌握一些口语化的写作技巧,剧本也能写得像聊天一样轻松自然,让观众从头尾看到&#xff0…

ubuntu 22.04网线连接无ip、网络设置无有线网界面(netplan修复)

目前遇到过树莓派和其他设备安装 ubuntu22.04, 使用有线网络一段时间(可能有其他软件安装导致)造成有线网络未启动无ip分配的问题。 1、动态分配 通过命令行启动dhcpclient实现 网络eth0存在异常,网口灯电源和信号灯均点亮&am…

Machine Learning on the Edge

安装 python3 网址:https://www.python.org/downloads/release/python-3120/ 打开命令行安装esptool包,pip install esptool 下载Node.js 网址:https://nodejs.org/en/download/prebuilt-installer

国产骄傲,华为自研编程语言,新式中文编程拒绝卡脖子

六大模块助力开发 10月30日,华为自研的通用编程语言——仓颉编程语言迎来了重要的里程碑时刻。其官方网站正式上线,并开放了首个公测版本的下载通道。这不仅标志着华为在编程语言领域的又一重大突破,也为开发者们带来了全新的编程选择与体验。…

qt QMainWindow详解

一、概述 QMainWindow继承自QWidget,并提供了一个预定义的布局,将窗口分成了菜单栏、工具栏、状态栏和中央部件区域。这些区域共同构成了一个功能丰富的主窗口,使得应用程序的开发更加简单和高效。 二、QMainWindow的常用组件及功能 菜单栏&…

VUE errolog, vue 错误集

I) installation As to command “npm install” on cmd or powershell, we must execute it under the program folder

Jenkins发布vue项目,版本不一致导致build错误

问题一 yarn.lock文件的存在导致在自动化的时候,频频失败问题二 仓库下载的资源与项目资源版本不一致 本地跑好久的一个项目,现在需要部署在Jenkins上面进行自动化打包部署;想着部署后今后可以省下好多时间,遂兴高采烈地去部署&am…

Laravel5 抓取第三方网站图片,存储到本地

背景 近期发现,网站上的部分图片无法显示, 分析发现,是因为引用的第三方网站图片(第三方服务器证书已过期) 想着以后显示的方便 直接抓取第三方服务器图片,转存到本地服务器 思路 1. 查询数据表&#xff0…

Linux特种文件系统--tmpfs文件系统前传:虚拟内存子系统

虚拟内存子系统是操作系统中的一个重要组成部分,它负责管理和优化计算机的内存使用。虚拟内存的概念允许操作系统为每一个进程创建一个虚拟地址空间,这个空间比实际物理内存要大得多。虚拟内存子系统通过将部分虚拟地址映射到物理内存,部分映…

【源码】Sharding-JDBC源码分析之Sql解析的原理

Sharding-JDBC系列 1、Sharding-JDBC分库分表的基本使用 2、Sharding-JDBC分库分表之SpringBoot分片策略 3、Sharding-JDBC分库分表之SpringBoot主从配置 4、SpringBoot集成Sharding-JDBC-5.3.0分库分表 5、SpringBoot集成Sharding-JDBC-5.3.0实现按月动态建表分表 6、【…