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


    fetch

    语法规则

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

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

    对于promise和aysnc-await可以参考

    aysnc-await的用法-CSDN博客

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

    请求实例

    1. // 请求地址
    2. let url = "https://api.github.com";
    3. // 请求格式
    4. let option = {
    5. 'method' : "get",
    6. 'Content-Type': 'application/json;charset=utf-8'
    7. };
    8. // async匿名函数
    9. (async()=>{
    10. let response = await fetch(url,option);// 待执行的promise
    11. if(response.ok){
    12. let data = await response.json(); // 执行完的结果
    13. console.log(data,response.status);// response.status请求状态码200-299
    14. // 以上response,fetch()的返回值,response.json()的返回值都是promise,data为访问url返回的值(promise的结果)
    15. }else{
    16. console.log("请求失败!",response.status);
    17. }
    18. // status —— HTTP 状态码,例如 200。
    19. // ok —— 布尔值,如果 HTTP 状态码为 200-299,则为 true。
    20. })()

     response 的属性中看到 HTTP 状态:

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

    请求结果

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

    XMLHttpRequest

    语法规则

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

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

    请求实例

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

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

  • 相关阅读:
    华清远见上海中心22071班
    Vue——webpack项目(没有安装vue-cli脚手架时)解决请求项目启动问题、跨域问题和请求转发报404的问题
    JavaScript面向对象:面向对象案例
    MySQL---DDL-数据库操作,对于数据库表的CRUD和表字段的数据类型
    c++11~c++20 -04-计算一段代码的运行时间
    软件架构模式
    springboot系列(十五):如何实现静态邮件模板发送?你一定得会|超级详细,建议收藏
    【在线编程-Python篇】Python入门 04 列表(下)
    羧基修饰青色乳胶微球100nm
    redis分布式锁和看门狗的实现
  • 原文地址:https://blog.csdn.net/I_am_shy/article/details/138200219