<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Ajax是XMLHttpRequest 物件提供了對 HTTP 協定的完全的存取,早期的專案,我們只能通過它向伺服器端請求資料,包括Jquery封裝的Ajax請求庫也是基於它的封裝
我們來看一下基於XMLHttpRequest物件去做一個Ajax請求的事例
// 通過XMLHttpRequest初始化一個Ajax請求範例 const xhr = new XMLHttpRequest(); // 設定超時時間,0表示永不超時 xhr.timeout = 0; // 初始化請求,這個方法不會傳送請求給伺服器端 // 第一個引數是請求的方法,例如GET、POST // 第二個引數,伺服器端請求的url // 第三個引數,請求是否是非同步,預設為true非同步 xhr.open('POST', '/api/url', true); // 請求需要傳送的資料 const formData = new FormData(); formData.append("username", "XXX"); formData.append("age", 18); // 請求發起 xhr.send(formData); // 監聽請求結果 // 拿到伺服器返回的資料 xhr.onreadystatechange = function () { // 當readyState為4並且xhr.status為200時 // 拿到了正常返回的資料 if (xhr.readyState == 4 && xhr.status == 200) { alert(xhr.responseText); } else { // 伺服器返回了異常資料 alert(xhr.statusText); } };
從上面的事例可以看出來,我們要想請求資料,需要先new XMLHttpRequest範例出來,然後再通過兼聽函數的方式來拿到伺服器返回的資料
Fetch是window物件提供的一個方法,用於實現基於promise的http請求,它的出現是用來取代最早的XMLHttpRequest實現的ajax請求
同樣的我們先來看一下Fetch請求的範例
// 請求的資料 const data = { username: "xxx", age: 18, }; // 第一個引數是請求的url // 第二個引數是一個物件 // 可以設定請求方式,請求資料、請求超時 // 還有請求頭等 fetch("/api/url", { // 請求方式 method: "POST", // 請求資料通過body傳遞 body: JSON.stringify(data), }).then((response) => { // 正常服務返回的資料通過then拿到 console.log(response); }).catch((error) => { // 異常返回在catch裡處理 console.log(error); });
從上面的事例可以看出來,我們要想請求資料,直接使用fetch這樣的全域性物件就行,然後再通過Promise的方式來拿到伺服器返回的資料
Axios並不是原生Js提供的方法,它是一個基於XMLHttpRequest封裝的Ajax請求庫,並且把伺服器返回的資料通過Promise的方式返回
還是老規矩,我們通過一個事例來看看Axios是怎麼請求資料的
// 首先通過npm安裝axios npm i -S axios // 通過import的方式在專案中引入axios import axios from 'axios' // 我們可以看到引數是一個物件 // 裡面可以設定請求方式、請求資料 // 還有請求頭等 axios({ method: "POST", url: "/api/url", data: { username: "xxx", age: 18, }, }).then((response) => { // 正常服務返回的資料通過then拿到 console.log(response); }).catch((error) => { // 異常返回在catch裡處理 console.log(error); });
從上面的事例可以看出來,我們要想請求資料,使用方式基本上和Fetch保持一致,但是它的底層確是基於XMLHttpRequest實現的
ajax:
優點:區域性更新,原生支援
缺點:可能破壞瀏覽器後退功能,巢狀回撥
jqueryAjax:
在原生ajax的基礎上進行封裝,支援jsonp
fetch:
優點:解決回撥地獄
缺點:APIA偏低層,需要封裝,預設不帶cookie,需要手動新增;瀏覽器支援情況不是很友好,需要第三方polyfill
axios的特點:
支援瀏覽器和node.js
支援promise
能攔截請求和響應
能轉換請求和相應資料
能取消請求
自動轉換json資料
瀏覽器端支援防止CSRF(跨站請求偽造)
我們在實際專案中一般使用axios,因為它是一個成熟的ajax請求庫,幫我們封裝了很多實用的方法來向伺服器請求資料
好了開發中,常用的伺服器資料請求就講到這了
到此這篇關於資料請求中Ajax、Fetch及Axios區別的文章就介紹到這了,更多相關Ajax、Fetch及Axios區別內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45