加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ajax新玩法fetch API

发布时间:2020-12-16 03:19:44 所属栏目:百科 来源:网络整理
导读:目前 Web 异步应用都是基于 XMLHttpRequest / ActiveXObject (IE)实现的, 这些对象不是专门为资源获取而设计的,因而它们的 API 非常复杂,同时还需要开发者处理兼容性问题。 虽然开发者普遍使用 $.ajax() 这样的上层包装,但 Fetch API 意在提供更加方便和

目前 Web 异步应用都是基于XMLHttpRequest/ActiveXObject(IE)实现的, 这些对象不是专门为资源获取而设计的,因而它们的 API 非常复杂,同时还需要开发者处理兼容性问题。 虽然开发者普遍使用$.ajax()这样的上层包装,但 Fetch API 意在提供更加方便和一致的原生 API, 同时统一 Web 平台上的资源获取行为,包括外链脚本、样式、图片、AJAX 等。同时Fetch API使用Promise,因此是一种简洁明了的API,比XMLHttpRequest更加简单易用。

fetch API 语法

 1  fetch(url)
 2     .then(function(response) {
 3         return response.json();
 4     })
 5     .then(function(data) {
 6         console.log(data);
 7     })
 8     .catch(function(e) {
 9         console.log("Oops,error");
10     });
11 //使用 ES6 的 箭头函数
12  fetch(url)
13     .then(response => response.json())
14     .then(data => console.log(data))
15     .catch(e => console.log("Oops,error",e))
16 //使用 async/await 来做最终优化
17 //使用 await 后,写异步代码就像写同步代码一样爽。await 后面可以跟 Promise 对象,表示等待 Promise resolve() 才会继续向下执行,如果 Promise 被 reject() 或抛出异常则会被外面的 try…catch 捕获。
18   (async function () {
19     try {
20         let response = await fetch(url);
21         let data = response.json();
22         console.log(data);
23     } catch(e) {
24         console.log("Oops,e);
25     }
26 })();

GET请求

1   fetch(url,{
2     method: "GET",//默认
3     headers:{
4         "Accept": "application/json,text/plain,*/*"
5     }
6 })
7 .then(response => response.json())
8 .then(data => console.log(data))
9 .catch(e => console.log("Oops,error",e))

POST请求

 fetch(url,{
    method: "POST",headers: {
        "Accept": "application/json,*/*","Content-type":"application:/x-www-form-urlencoded; charset=UTF-8"
    },body: "name=hzzly&age=22"
})
.then(response => response.json())
.then(data => console.log(data))
.catch(e => console.log("Oops,e))

使用Fetch请求发送凭证

要使用Fetch发送带有诸如cookie之类的凭证的请求。你可以在选项对象中将credentials属性值设置为“include”:

  fetch(url,{
    credentials: "include"
})

封装POST请求

  //将对象拼接成 name=hzzly&age=22 的字符串形式
function params(obj) {
    let result = ''
    for(let item in obj) {
        result += `&${item}=${obj[item]}`
    }
    if(result) {
        result = result.slice(1)
    }
    return result
}

function post(url,paramsObj) {
    let result = fetch(url,{
        methods: 'POST',credentials: "include"
        headers: {
            "Accept": "application/json,"Content-type":"application:/x-www-form-urlencoded; charset=UTF-8"
        },body: params(paramsObj)
    })
    return result
}

let obj = {
    name: 'hzzly',age: 22
}
post(url,obj)
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(e => console.log("Oops,e))

原文 请点击这里React 标配的Fetch是什么?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读