js网络请求---fetch和XMLHttpRequest的用法

news/2024/9/23 7:20:37/

fetch

语法规则

javascript">let promise = fetch(url, [options])
//url —— 字符串:要访问的 URL。
//options —— 对象:可选参数:method,header 等。

        fetch函数返回一个promise,若存在网络问题,或网址不存在,那么 promise 就会 reject。异常的 HTTP 状态,例如 404 或 500,不会导致出现 error。

对于promise和aysnc-await可以参考

aysnc-await的用法-CSDN博客

js语法---简单理解promise-CSDN博客

请求实例

javascript">// 请求地址
let url = "https://api.github.com";
// 请求格式
let option = {'method' : "get",'Content-Type': 'application/json;charset=utf-8'
};// async匿名函数
(async()=>{let response = await fetch(url,option);// 待执行的promiseif(response.ok){let data = await response.json(); // 执行完的结果console.log(data,response.status);// response.status请求状态码200-299// 以上response,fetch()的返回值,response.json()的返回值都是promise,data为访问url返回的值(promise的结果)}else{console.log("请求失败!",response.status);}// status —— HTTP 状态码,例如 200。// ok —— 布尔值,如果 HTTP 状态码为 200-299,则为 true。
})()

 response 的属性中看到 HTTP 状态:

  • status —— HTTP 状态码,例如 200。
  • ok —— 布尔值,如果 HTTP 状态码为 200-299,则为 true

请求结果

可以看到控制台和浏览器对应的返回数据

XMLHttpRequest

语法规则

javascript">// 导入XMLHttpRequest模块
const request = new XMLHttpRequest();// 1.发起get请求
request.open("get",url);
// 3.处理请求结果
request.onload = ()=>{}
// 2.发送请求
request.send();
// 函数的执行顺序

 实例化一个XMLHttpRequest对象,通过XMLHttpRequest对象发起请求并处理结果

请求实例

javascript">// 导入XMLHttpRequest模块
const request = new XMLHttpRequest();// 请求地址
let url = "https://api.github.com";// 1.发起get请求
request.open("get",url);
// 3.处理请求结果
request.onload = ()=>{// 请求成功if(request.status === 200 && request.readyState === 4){let data = request.response;// 请求的结果格式为api默认格式(通常为json)console.log(data);}
}
// 2.发送请求
request.send();//发送请求后才能拿到结果// request.readyStatus一共有5中状态:// 0 - (未初始化)还没有调用send()方法
// 1 - (载入)已调用send()方法,正在发送请求
// 2 - (载入完成)send()方法执行完成,已经接收到全部响应内容
// 3 - (交互)正在解析响应内容
// 4 - (完成)响应内容解析完成,可以在客户端调用了// request.status同HTTP的状态:// 200:请求成功// 400: 内部服务器错误// request.onload = function(e){}  请求完成// request.process  请求正在加载// request.onerror  请求失败

注意:这种请求方式只能再浏览器中执行


http://www.ppmy.cn/news/1443749.html

相关文章

linux文件夹映射到本地win系统

在Linux上安装和配置Samba服务器相对简单,以下是基本的步骤: 1. **安装Samba软件包**:使用你的Linux发行版的包管理器来安装Samba软件包。例如,在基于Debian的发行版(如Ubuntu)上,你可以使用以…

spring boot 将配置文件信息 赋值到类注解

如何将application.properties中的值赋值给一个类注解呢 先看两个类 application.properties server.port8080 flow.namemyFlow flow.age20Component Documented Target({ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) public interface UserInfo {String name() d…

C++ //练习 13.54 如果我们为HasPtr定义了移动赋值运算符,但未改变拷贝并交换运算符,会发生什么?编写代码验证你的答案。

C Primer(第5版) 练习 13.54 练习 13.54 如果我们为HasPtr定义了移动赋值运算符,但未改变拷贝并交换运算符,会发生什么?编写代码验证你的答案。 环境:Linux Ubuntu(云服务器) 工具…

【HTML】实现 pre 标签内容超出自动换行

文章目录 示例&#xff1a; <pre> 一串很长的文本&#xff0c;一串很长的文本&#xff0c;一串很长的文本&#xff0c;一串很长的文本&#xff0c;一串很长的文本&#xff0c;一串很长的文本&#xff0c;一串很长的文本&#xff0c;一串很长的文本&#xff0c;一串很长的…

深度学习检测算法YOLOv5的实战应用

在当前的检测项目中&#xff0c;需要一个高效且准确的算法来处理大量的图像数据。经过一番研究和比较&#xff0c;初步选择了YOLOv5作为算法工具。YOLOv5是一个基于深度学习的检测算法&#xff0c;以其快速和准确而闻名。它不仅能够快速处理图像数据&#xff0c;还能提供较高的…

ArcGIS无法开始编辑TIN!开始编辑TIN显示灰色

ArcGIS无法开始编辑TIN&#xff01;开始编辑TIN显示灰色&#xff1f; 解决方案&#xff01; 1、确认自定义——扩展模块中空间分析、3D分析模块勾选。 2、确认以上后&#xff0c;还是不能编辑的话&#xff0c;我们可以调出 3D分析分析工具条&#xff0c;你就会发现。TIN编辑工…

个人学习总结__打开摄像头、播放网络视频的以及ffmpeg推流

前言 最近入手了一款非常便宜的usb摄像头&#xff08;买回来感觉画质很低&#xff0c;没有描述的4k&#xff0c;不过也够用于学习了&#xff09;,想着利用它来开启流媒体相关技术的学习。第一步便是打开摄像头&#xff0c;从而才能够对它进行一系列后续操作&#xff0c;诸如实…

【数据结构与算法设计】知识点复习-第五章-树形结构

1. 树 树是数据元素之间具有层次关系的非线性结构&#xff0c;是由n个结点构成的有限集合&#xff0c;结点数为0的树叫空树。树必须满足以下条件。 (1) 有且仅有一个被称为根的结点。 (2) 其余结点可分为m个互不相交的有限集合&#xff0c;每个集合又构成一棵树&#xff0c;叫…