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

fetch

语法规则

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博客

请求实例

// 请求地址
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);// 待执行的promise
    if(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

语法规则

// 导入XMLHttpRequest模块
const request = new XMLHttpRequest();

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

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

请求实例

// 导入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  请求失败

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

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值