ajax 寫了多年,也用了各種 ajax 庫,瀏覽器終于推出了一個(gè)原生的 Fetch API 實(shí)現(xiàn)ajax 功能。和 Fetch 一起的還有四個(gè)類:Headers Request Response Body
Fetchwindow.fetch 判斷瀏覽器是否支持
fetch(url/request[, options])
request 是一個(gè) Request 對(duì)象,后面詳細(xì)講 options 是一個(gè)對(duì)象,主要key 如下: method: GET/POST等 headers: 一個(gè)普通對(duì)象,或者一個(gè) Headers 對(duì)象 body: 傳遞給服務(wù)器的數(shù)據(jù),可以是字符串/Buffer/Blob/FormData,如果方法是 GET/HEAD,則不能有此參數(shù) mode: cors / no-cors / same-origin, 是否跨域,默認(rèn)是 no-cors credentials: omit / same-origin / include cache: default / no-store / reload / no-cache / force-cache / only-if-cached redirect: follow / error / manual referrer: no-referrer / client / 或者一個(gè)url referrerPolicy: no-referrer / no-referrer-when-downgrade / origin / origin-when-cross-origin / unsafe-url integrity: 資源完整性驗(yàn)證
fetch() 返回一個(gè) promise,所以這么用
fetch() .then(response => { if (response.ok) { // 成功處理 } }).catch(error => { // 異常處理 })
網(wǎng)絡(luò)錯(cuò)誤,權(quán)限問題等會(huì)報(bào)異常,404不算作異常
所以還需要通過 response.ok 判斷是否成功
例如:
var headers = new Headers(); headers.append("Content-Type", "image/jpeg"); /* headers 也可以是一個(gè)對(duì)象 * {"Content-Type": "image/jpeg"} */ var init = { method: "GET", headers: headers, mode: "cors", cache: "default" }; fetch("xxxxx.jpg", init) .then(response => { // XXXX });Request
var request = new Request(url/request[, options]);
Request 參數(shù)和 fetch 參數(shù)相同
var headers = new Headers([init])
init 可以是一個(gè)普通對(duì)象或者是一個(gè) Headers 對(duì)象
Headers對(duì)象有以下方法
append(key, value) delete(key) entries() 返回一個(gè)遍歷器,類似二維數(shù)組,每一個(gè) key 和它對(duì)應(yīng)的 value 構(gòu)成一個(gè)數(shù)組 get(key) 獲取指定 key 的value,如果key被添加了多次,則返回第一次添加時(shí)的 value getAll(key) 返回 key 對(duì)應(yīng)的所有 value,組成一個(gè)數(shù)組 has(key) keys() 所有 key 組成的遍歷器 set(key, value) 更改 key 的值,如果 key 不存在,則相當(dāng)于 append values() 所有 value 組成的遍歷器Body
Request 和 Response 都實(shí)現(xiàn)了 Body 的功能,Body 的方法在下面 Response 中詳解
Responsevar response = new Response([body][, init])
很少用到 new Response 一般是作為 fetch 返回的結(jié)果
response 有以下屬性,都是只讀的
headers ok status在 200 和 299 之間為 true redirected Boolean status statusText type basic / cors / error / opaque url bodyUsed
有以下方法
clone() error() redirect() 從 Body 實(shí)現(xiàn)的方法 arrayBuffer() blob() 將body 解析為Blob文件,返回一個(gè) promise formData() json() 將body 解析為json,返回一個(gè) promise text() 將body 解析為字符串,返回一個(gè) promise
參考:
https://www.w3ctech.com/topic...
https://developer.mozilla.org...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/80852.html
摘要:使用它可以讓頁面請(qǐng)求少量的數(shù)據(jù),而不用刷新整個(gè)頁面。這是一個(gè)比較粗糙的,不符合關(guān)注分離的設(shè)計(jì)原則,配置和使用都不是那么友好。它的一個(gè)優(yōu)勢(shì)異步操作,但的異步操作是基于事件的異步模型,沒有那么友好。 Ajax 是什么? 答:Ajax是一種可以在瀏覽器和服務(wù)器之間使用異步數(shù)據(jù)傳輸(HTTP請(qǐng)求)的技術(shù)。使用它可以讓頁面請(qǐng)求少量的數(shù)據(jù),而不用刷新整個(gè)頁面。而傳統(tǒng)的頁面(不使用Ajax)要刷新...
摘要:使用它可以讓頁面請(qǐng)求少量的數(shù)據(jù),而不用刷新整個(gè)頁面?;谑裁创鹚诘氖恰5膸齑鸹谏厦娴脑?,各種庫引用而生,然而最有名的就是的中的。它的一個(gè)優(yōu)勢(shì)異步操作,但的異步操作是基于事件的異步模型,沒有那么友好。 歡迎訪問我的個(gè)人博客:http://www.xiaolongwu.cn 基本知識(shí) 1. Ajax是什么? 答:Ajax是一種可以在瀏覽器和服務(wù)器之間使用異步數(shù)據(jù)傳輸(HTTP請(qǐng)求)...
摘要:例子張三刪除用戶為了刪除用戶,我們首先需要定位用戶,然后我們定義方法類型。例子張三結(jié)論現(xiàn)在,你已基本了解如何使用的從服務(wù)器檢索或操作資源,以及如何處理。您可以使用本文作為如何構(gòu)建操作的請(qǐng)求的指南。 showImg(https://segmentfault.com/img/bVbjxqh?w=1000&h=562); 本次將介紹如何使用Fetch API(ES6 +)對(duì)REST API的...
摘要:現(xiàn)在有很多優(yōu)雅的包裝,但是這遠(yuǎn)遠(yuǎn)不夠。一個(gè)實(shí)例代表了一個(gè)的請(qǐng)求部分。一旦創(chuàng)建,它所有的屬性都是只讀的。處理基本的返回不是所有的接口都返回格式的數(shù)據(jù),所以還要處理一些類型的返回結(jié)果。最后很好用,但是現(xiàn)在還不允許取消一個(gè)請(qǐng)求。 Fetch API 一個(gè)隱藏最深的秘密就是AJAX的實(shí)現(xiàn)底層的XMLHttpRequest,這個(gè)方法本來并不是造出來干這事的?,F(xiàn)在有很多優(yōu)雅的API包裝XHR,但是...
摘要:四請(qǐng)求常見數(shù)據(jù)格式接下來將介紹如何使用請(qǐng)求本地文本數(shù)據(jù),請(qǐng)求本地?cái)?shù)據(jù)以及請(qǐng)求網(wǎng)絡(luò)接口。請(qǐng)求網(wǎng)絡(luò)接口獲取中的數(shù)據(jù),做法與獲取本地的方法類似得到數(shù)據(jù)后,同樣要經(jīng)過處理 一 序言 在 傳統(tǒng)Ajax 時(shí)代,進(jìn)行 API 等網(wǎng)絡(luò)請(qǐng)求都是通過XMLHttpRequest或者封裝后的框架進(jìn)行網(wǎng)絡(luò)請(qǐng)求,然而配置和調(diào)用方式非常混亂,對(duì)于剛?cè)腴T的新手并不友好。今天我們介紹的Fetch提供了一個(gè)更好的替代方...
摘要:四請(qǐng)求常見數(shù)據(jù)格式接下來將介紹如何使用請(qǐng)求本地文本數(shù)據(jù),請(qǐng)求本地?cái)?shù)據(jù)以及請(qǐng)求網(wǎng)絡(luò)接口。請(qǐng)求網(wǎng)絡(luò)接口獲取中的數(shù)據(jù),做法與獲取本地的方法類似得到數(shù)據(jù)后,同樣要經(jīng)過處理 一 序言 在 傳統(tǒng)Ajax 時(shí)代,進(jìn)行 API 等網(wǎng)絡(luò)請(qǐng)求都是通過XMLHttpRequest或者封裝后的框架進(jìn)行網(wǎng)絡(luò)請(qǐng)求,然而配置和調(diào)用方式非?;靵y,對(duì)于剛?cè)腴T的新手并不友好。今天我們介紹的Fetch提供了一個(gè)更好的替代方...
閱讀 3207·2023-04-25 16:50
閱讀 941·2021-11-25 09:43
閱讀 3566·2021-09-26 10:11
閱讀 2547·2019-08-26 13:28
閱讀 2558·2019-08-26 13:23
閱讀 2457·2019-08-26 11:53
閱讀 3601·2019-08-23 18:19
閱讀 3018·2019-08-23 16:27