ajax,fetch,axios的區別及運用
AJAX
- 是一種在無需重新載入整個網頁的情況下,能夠更新部分網頁的技術。
- 通過在後臺與伺服器進行少量資料交換,AJAX 可以使網頁實現非同步更新。這意味著可以在不重新載入整個網頁的情況下,對網頁的某部分進行更新。
- 傳統的網頁(不使用 AJAX)如果需要更新內容,必需過載整個網頁面。
1. ajax的封裝(建立myajax.js 資料夾)
/**
* {
* method:get,
* url: '/login.do',
* content: 'username=admin&password=123'
* success: functon(e){
*
* }
* }
*
*
*
* @param {*} json
*/
function myajax(json) {
// 1. 獲取 XmlHttpRequest
var xhr = getXHR();
// 2. 開啟連線傳送請求
xhr.open(json.method, json.url, true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // 請求頭部
xhr.send(json.content);
// 3. 處理響應
xhr.onreadystatechange = function (e) {
// 根據就緒碼判斷響應是否完成
if (e.target.readyState === 4) {
// 根據狀態碼判斷成功失敗
if (e.target.status === 200) {
/* console.log(e.target.responseText);
alert('響應內容是 :' + e.target.responseText); */
json.success(e.target.responseText);
}
}
}
}
function getXHR() {
if (window.XMLHttpRequest) {
return new window.XMLHttpRequest;
} else {
// 相容IE瀏覽器低版本
new window.AtiveXObject("Microsoft.XMLHTTP");
}
}
export default myajax; //暴露出去
2.呼叫myajax
myajax({
method: "post", //請求方式post get
url: "http://127.0.0.1:8089/api/login", //請求地址
content: `username=${username}&password=${password}`, //請求正文
success: function(e) { //成功的函式回撥
const data = JSON.parse(e);
if (data.resultcode === -1) { //介面文件中給的引數,判斷是否等於-1
//登入失敗
that.message = data.resultinfo;
} else {
//登入成功
that.$router.replace({ path: "/main" });
}
}
});
Fetch
- fetch號稱是AJAX的替代品,是在ES6出現的,使用了ES6中的promise物件。Fetch是基於promise設計的。Fetch的程式碼結構比起ajax簡單多了,引數有點像jQuery ajax。但是,一定記住fetch不是ajax的進一步封裝,而是原生js,沒有使用XMLHttpRequest物件。
- -優勢
- 語法簡潔,更加語義化
- 基於標準 Promise 實現,支援 async/await
- 同構方便,使用 isomorphic-fetch
- 更加底層,提供的API豐富(request, response)
- 脫離了XHR
fetch使用程式碼
---get請求---
// 通過fetch獲取百度的錯誤提示頁面
fetch('https://www.baidu.com/search/error.html', {
method: 'GET'
})
.then((res)=>{
return res.text() // res.json();
})
.then((res)=>{
console.log(res)
})
---post請求---
// 通過fetch獲取百度的錯誤提示頁面
fetch('https://www.baidu.com/search/error.html', {
method: 'POST',
body: new URLSearchParams([["foo", 1],["bar", 2]]).toString() // 這裡是請求物件
})
.then((res)=>{
return res.text()
})
.then((res)=>{
console.log(res)
})
Axios
-axios主要是jQuery的ajax與fetch的融合,十分強大
- 特點
- 支援瀏覽器和node.js
- 支援promise(重點)
- 能攔截請求和響應
- 能轉換請求和響應資料
- 能取消請求
- 自動轉換JSON資料
- 瀏覽器端支援防止CSRF(跨站請求偽造)
1. 安裝
npm install axios //然後在需要的地方呼叫
2. 安裝
axios({
method: 'post', //請求方式
url: '/user/12345', //請求地址
data: { //請求資料
firstName: 'Fred',
lastName: 'Flintstone'
}
}).then(res=>{
console.log(`成功的回撥${res}`)
}).catch(err=>{
console.log(`錯誤的回撥${err}`)
});
相關文章
- axios,Ajax,jQuery ajax,axios和fetch的區別iOSjQuery
- ajax和axios、fetch的區別iOS
- ajax和fetch、axios的區別以及axios原理iOS
- Ajax、fetch、axios的區別與優缺點iOS
- ajax,axios,fetchiOS
- AJAX、$.ajax、axios、fetch、superagentiOS
- Ajax,jQuery ajax,axios和fetch介紹、區別以及優缺點jQueryiOS
- ajax、axios、fetch之間的詳細區別以及優缺點iOS
- 非同步請求xhr、ajax、axios與fetch的區別比較非同步iOS
- 從ajax到fetch、axiosiOS
- ajax、axios、fetch、jsonp、corsiOSJSONCORS
- 對ajax、axios、fetch的認識iOS
- 六九、ajax,fetch,axios,wx.request封裝iOS封裝
- 前端知識總結之Ajax,axios,fetch篇前端iOS
- AJAX API三駕馬車: Axios vs . jQuery和FetchAPIiOSjQuery
- 資料互動——Promise、Ajax、axios和fetch的優缺點PromiseiOS
- ajax與jsonp的區別及用法JSON
- 向伺服器傳送請求的四種方法Ajax,Fetch,Axios,JQurey中的($.ajax)伺服器iOS
- 有同學問我:Fetch 和 Ajax 有什麼區別?
- Ajax與Fetch
- Axios、axios攔截器、fetch-jsonp ——0807iOSJSON
- 01-Ajax&AxiosiOS
- Fetch 代替 Ajax 的瀏覽器 API瀏覽器API
- [JavaScript] Promise 與 Ajax/AxiosJavaScriptPromiseiOS
- 1、ajax、axios總結iOS
- 05 . Vue前端互動,fetch,axios,以asyncawait方式呼叫介面使用及案例Vue前端iOSAI
- JS 中的網路請求 AJAX, Fetch, WebSocketJSWeb
- 封裝ajax、axios請求封裝iOS
- 利用fetch方法實現Ajax請求
- AJAX同步和非同步區別非同步
- axios(xhr) 和 fetch 兩種請求方式iOS
- 【axios】XHR的ajax封裝+axios攔截器呼叫+請求取消iOS封裝
- js基礎進階–從ajax到fetch的理解JS
- Vue為何棄用經典的Ajax,選擇新技術Axios?VueiOS
- Ajax 之戰:XMLHttpRequest與Fetch API比較XMLHTTPAPI
- fetch和axios請求的原理都是基於XMLHttpRerequst嗎?iOSXMLHTTP
- jQuery的AJAX請求中contentType和dataType的區別jQuery
- Axios原始碼深度剖析 – AJAX新王者iOS原始碼