美文网首页
fetch异步请求数据

fetch异步请求数据

作者: 笑该动人d | 来源:发表于2020-09-23 10:20 被阅读0次

一、介绍

Fetch是基于promise设计的。Fetch的代码结构比起ajax简单多了,参数有点像jQuery ajax。但是,一定记住fetch不是ajax的进一步封装,而是原生js,没有使用XMLHttpRequest对象。

二、使用

1.Fetch发送数据

使用Fetch发送也很简单,只需要配置三个参数。
fetch('url', options);

options有三个参数:
  • 第一个参数是设置请求方法(如post、put或del),Fetch会自动设置方法为get。
  • 第二个参数是设置头部。因为一般使用JSON数据格式,所以设置ContentType为application/json。
  • 第三个参数是设置包含JSON内容的主体。因为JSON内容是必须的,所以当设置主体时会调用JSON.stringify。
fetch('url', {
  // 请求方式
  method: 'post',    // post|get
  // 设置头部
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  body: username=${userName}&password=${password}
})

2.Fetch响应数据处理

fetch('url').then(res => {
    if (res.ok) {
      return res.json(); // 返回一个promise对象
    } else {
       return Promise.reject('something went wrong!')
    }
}).then( data => {
    // 继续处理响应数据
}).catch( err => {
    console.log("网络出错" + err);
});

3.链式调用,例子

// fetch异步请求数据
      fetch("http://it.warmtel.com/api/login", {
        // 请求方式
        method: 'post',
        // 设置头部,post和get的头部不一样
        headers: {
          'Content-Type': 'application/x-www-form-urlencoded'
        },
        body: `username=${userName}&password=${password}`
      }).then(res => {
        // 响应成功会调用response.json。最简单方法是检查response是否为ok。
        console.log(res);
        if (res.ok) {
          return res.json(); // 响应内容转为json对象
          // 2.进入主界面
          this.$router.replace({ path: "/main" });
        } else {
          return Promise.reject(new Error("请求出错"));
        }
      }).then(data => {
        console.log(data);
        // 2.进入主界面
        this.$router.replace({ path: "/main" });
      }).catch(err => {
        console.log("网络出错" + err);
      })

相关文章

网友评论

      本文标题:fetch异步请求数据

      本文链接:https://www.haomeiwen.com/subject/nntgfktx.html