ajax 寫了多年,也用了各種 ajax 庫,瀏覽器終于推出了一個原生的 Fetch API 實現(xiàn)ajax 功能。和 Fetch 一起的還有四個類:Headers Request Response Body
Fetchwindow.fetch 判斷瀏覽器是否支持
fetch(url/request[, options])
request 是一個 Request 對象,后面詳細(xì)講 options 是一個對象,主要key 如下: method: GET/POST等 headers: 一個普通對象,或者一個 Headers 對象 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 / 或者一個url referrerPolicy: no-referrer / no-referrer-when-downgrade / origin / origin-when-cross-origin / unsafe-url integrity: 資源完整性驗證
fetch() 返回一個 promise,所以這么用
fetch() .then(response => { if (response.ok) { // 成功處理 } }).catch(error => { // 異常處理 })
網(wǎng)絡(luò)錯誤,權(quán)限問題等會報異常,404不算作異常
所以還需要通過 response.ok 判斷是否成功
例如:
var headers = new Headers(); headers.append("Content-Type", "image/jpeg"); /* headers 也可以是一個對象 * {"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 可以是一個普通對象或者是一個 Headers 對象
Headers對象有以下方法
append(key, value) delete(key) entries() 返回一個遍歷器,類似二維數(shù)組,每一個 key 和它對應(yīng)的 value 構(gòu)成一個數(shù)組 get(key) 獲取指定 key 的value,如果key被添加了多次,則返回第一次添加時的 value getAll(key) 返回 key 對應(yīng)的所有 value,組成一個數(shù)組 has(key) keys() 所有 key 組成的遍歷器 set(key, value) 更改 key 的值,如果 key 不存在,則相當(dāng)于 append values() 所有 value 組成的遍歷器Body
Request 和 Response 都實現(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 實現(xiàn)的方法 arrayBuffer() blob() 將body 解析為Blob文件,返回一個 promise formData() json() 將body 解析為json,返回一個 promise text() 將body 解析為字符串,返回一個 promise
參考:
https://www.w3ctech.com/topic...
https://developer.mozilla.org...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/80852.html
摘要:使用它可以讓頁面請求少量的數(shù)據(jù),而不用刷新整個頁面。這是一個比較粗糙的,不符合關(guān)注分離的設(shè)計原則,配置和使用都不是那么友好。它的一個優(yōu)勢異步操作,但的異步操作是基于事件的異步模型,沒有那么友好。 Ajax 是什么? 答:Ajax是一種可以在瀏覽器和服務(wù)器之間使用異步數(shù)據(jù)傳輸(HTTP請求)的技術(shù)。使用它可以讓頁面請求少量的數(shù)據(jù),而不用刷新整個頁面。而傳統(tǒng)的頁面(不使用Ajax)要刷新...
摘要:使用它可以讓頁面請求少量的數(shù)據(jù),而不用刷新整個頁面。基于什么答它基于的是。的庫答基于上面的原因,各種庫引用而生,然而最有名的就是的中的。它的一個優(yōu)勢異步操作,但的異步操作是基于事件的異步模型,沒有那么友好。 歡迎訪問我的個人博客:http://www.xiaolongwu.cn 基本知識 1. Ajax是什么? 答:Ajax是一種可以在瀏覽器和服務(wù)器之間使用異步數(shù)據(jù)傳輸(HTTP請求)...
摘要:例子張三刪除用戶為了刪除用戶,我們首先需要定位用戶,然后我們定義方法類型。例子張三結(jié)論現(xiàn)在,你已基本了解如何使用的從服務(wù)器檢索或操作資源,以及如何處理。您可以使用本文作為如何構(gòu)建操作的請求的指南。 showImg(https://segmentfault.com/img/bVbjxqh?w=1000&h=562); 本次將介紹如何使用Fetch API(ES6 +)對REST API的...
摘要:四請求常見數(shù)據(jù)格式接下來將介紹如何使用請求本地文本數(shù)據(jù),請求本地數(shù)據(jù)以及請求網(wǎng)絡(luò)接口。請求網(wǎng)絡(luò)接口獲取中的數(shù)據(jù),做法與獲取本地的方法類似得到數(shù)據(jù)后,同樣要經(jīng)過處理 一 序言 在 傳統(tǒng)Ajax 時代,進(jìn)行 API 等網(wǎng)絡(luò)請求都是通過XMLHttpRequest或者封裝后的框架進(jìn)行網(wǎng)絡(luò)請求,然而配置和調(diào)用方式非常混亂,對于剛?cè)腴T的新手并不友好。今天我們介紹的Fetch提供了一個更好的替代方...
摘要:四請求常見數(shù)據(jù)格式接下來將介紹如何使用請求本地文本數(shù)據(jù),請求本地數(shù)據(jù)以及請求網(wǎng)絡(luò)接口。請求網(wǎng)絡(luò)接口獲取中的數(shù)據(jù),做法與獲取本地的方法類似得到數(shù)據(jù)后,同樣要經(jīng)過處理 一 序言 在 傳統(tǒng)Ajax 時代,進(jìn)行 API 等網(wǎng)絡(luò)請求都是通過XMLHttpRequest或者封裝后的框架進(jìn)行網(wǎng)絡(luò)請求,然而配置和調(diào)用方式非常混亂,對于剛?cè)腴T的新手并不友好。今天我們介紹的Fetch提供了一個更好的替代方...
閱讀 3097·2023-04-25 16:50
閱讀 911·2021-11-25 09:43
閱讀 3523·2021-09-26 10:11
閱讀 2524·2019-08-26 13:28
閱讀 2535·2019-08-26 13:23
閱讀 2428·2019-08-26 11:53
閱讀 3571·2019-08-23 18:19
閱讀 2993·2019-08-23 16:27