亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

前端獲取資源的方式(ajax、fetch)以及其區(qū)別詳解

 更新時間:2024年07月22日 09:46:19   作者:www.www  
Fetch 被稱之為下一代 Ajax 技術,內(nèi)部采用 Promise 方式處理數(shù)據(jù)API 語法簡潔明了,這篇文章主要給大家介紹了關于前端獲取資源的方式(ajax、fetch)以及其區(qū)別的相關資料,需要的朋友可以參考下

一、使用 ajax 請求

1. 什么是 ajax 請求

Ajax 即 Asynchronous Javascript And XML(異步JavaScript和XML),在2005年提出,是一種描述使用現(xiàn)有技術集合的‘新’方法,包括: HTML 或 XHTML, CSS, JavaScript, DOM, XML, XSLT, 以及最重要的XMLHttpRequest。 使用Ajax技術網(wǎng)頁應用能夠快速地將增量更新呈現(xiàn)在用戶界面上,而不需要重載(刷新)整個頁面,這使得程序能夠更快地回應用戶的操作。

2. ajax請求原理

  • 簡單概述

    Ajax的原理簡單來說通過JavaScript原生的XmlHttpRequest對象來向服務器發(fā)異步請求,從服務器獲得數(shù)據(jù),然后再用JavaScript來操作DOM,從而實現(xiàn)頁面更新。

  • 與服務端交互詳細過程
    • 創(chuàng)建 Ajax的核心對象 XMLHttpRequest對象
    • 通過 XMLHttpRequest 對象的 open() 方法與服務端建立連接
    • 構(gòu)建請求所需的數(shù)據(jù)內(nèi)容,并通過XMLHttpRequest 對象的 send() 方法發(fā)送給服務器端
    • 通過 XMLHttpRequest 對象提供的 onreadystatechange 事件,監(jiān)聽服務器端的通信狀態(tài)
    • 接受并處理服務端向客戶端響應的數(shù)據(jù)結(jié)果
    • 根據(jù)響應結(jié)果操作DOM,將處理結(jié)果更新到 HTML頁面中
  • 詳細實現(xiàn)代碼示例
    	// 創(chuàng)建XMLHttpRequest對象
    	const request = new XMLHttpRequest()
    	// 監(jiān)聽onreadystatechange 事件,與服務端通信
    	request.onreadystatechange = function(e){
    		// 獲取當前請求狀態(tài),readyState 的值為 4 ,表示整個請求過程完畢
    	    if(request.readyState === 4){ 
    	    	// 根據(jù)返回的狀態(tài)碼,判斷當前請求是否成功返回
    	        if(request.status >= 200 && request.status <= 300){  
    	        	// 獲取到服務端返回的結(jié)果
    	            console.log(request.responseText) 
    	        }else if(request.status >=400){
    	        	// 獲取到服務端返回的錯誤信息
    	            console.log("錯誤信息:" + request.status)
    	        }
    	    }
    	}
    	// XMLHttpRequest 對象的 open() 方法與服務端建立連接
    	request.open('POST','http://xxxx')
    	// 通過XMLHttpRequest 對象的 send() 方法將請求發(fā)送給服務端
    	request.send()
    

二、使用fetch請求

1. 什么是fetch請求

Fetch請求是一種現(xiàn)代Web API,用于在JavaScript中發(fā)出HTTP數(shù)據(jù)請求。它是XMLHttpRequest的一種替代方案,提供了更加簡潔和現(xiàn)代化的方式來處理網(wǎng)絡請求。Fetch函數(shù)是原生JavaScript的一部分,不需要使用XMLHttpRequest對象。Fetch請求使用Promise來處理異步操作,這使得它的代碼更加清晰和簡潔。

2. fetch請求原理

  • fetch是基于原生的XMLHttpRequest對象來實現(xiàn)數(shù)據(jù)請求的。
  • 同時,fetch也是基于Promise實現(xiàn)鏈式調(diào)用的。
  • 則實現(xiàn)fetch的本質(zhì):就是實現(xiàn)ajax的封裝以及Promise的實現(xiàn)。

通過以上ajax部分的講解中,我們知道ajax可以通過XMLHttpRequest簡單實現(xiàn):

	function ajax(url,suc,fail) {
	  var xhr = new XMLHttpRequest();
	    xhr.open('POST',url, true);
	    xhr.onreadystatechange = function () {
	        if(xhr.readyState == 4){
	            if(xhr.status == 200){
	                suc(xhr.responseText)
	            } else {
	                console.log(err);
	                fail(xhr.responseText);
	            }
	        }
	    };
	    xhr.send(null);
	}

fetch可結(jié)合Promise和ajax簡單實現(xiàn):

	function fetch(url) {
	    return new Promise(function (resolve,reject) {
	        ajax(url,function (res) {
	            resolve(res);
	        },function (err) {
	            reject(err);
	        })
	    })
	}

fetch調(diào)用之后返回的是一個Promise實例,可以直接調(diào)用Promise實例的then方法和catch方法獲取請求結(jié)果或報錯信息。

三、fetch和ajax的區(qū)別

Fetch和Ajax的主要區(qū)別在于它們的API設計、語法、錯誤處理、進度監(jiān)測、以及對于跨域請求的處理。

  • API設計方面
    • Fetch是現(xiàn)代JavaScript中的API,使用Promise對象來處理異步操作,可以鏈式調(diào)用,使代碼更易于理解和維護
    • Ajax是一種傳統(tǒng)的技術,通常使用XMLHttpRequest對象來進行請求和響應的處理
  • 語法和錯誤處理方面
    • Fetch使用一種基于Promise的API風格,返回的是一個Promise對象,對于網(wǎng)絡請求報錯,對400、500都當做成功的請求,需要封裝去處理
    • Ajax的語法相對較復雜,需要編寫更多的代碼來處理回調(diào)函數(shù)和狀態(tài),它通常使用回調(diào)函數(shù)來處理異步操作,可能會導致回調(diào)地獄的問題,尤其在復雜的請求鏈中
  • 進度監(jiān)測方面
    • Fetch沒有辦法原生監(jiān)測請求的進度
    • Ajax基于原生的XHR開發(fā),可以監(jiān)測
  • 跨域請求方面
    • Fetch對跨域請求有更嚴格的限制,因為它遵循了同源策略,如果需要進行跨域請求,需要在服務器端設置適當?shù)腃ORS頭(Cross-Origin Resource Sharing)以允許跨域請求
    • Ajax也受到同源策略的限制,但可以通過JSONP、代理服務器等技術來進行跨域請求
  • 兼容性方面
    Fetch基于Promise開發(fā),Ajax相較于Fetch兼容性好一些

總的來說,F(xiàn)etch是現(xiàn)代化的、更靈活的方式來處理網(wǎng)絡請求,特別適合使用在現(xiàn)代JavaScript應用中,而Ajax仍然在一些舊的應用和傳統(tǒng)的環(huán)境中使用,并且有些情況下可能更容易上手。

總結(jié)

到此這篇關于前端獲取資源的方式(ajax、fetch)以及其區(qū)別的文章就介紹到這了,更多相關前端獲取資源ajax、fetch內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 在js文件中引入(調(diào)用)另一個js文件的三種方法

    在js文件中引入(調(diào)用)另一個js文件的三種方法

    這篇文章主要介紹了在js文件中引入(調(diào)用)另一個js文件的三種方法,幫助大家更好的理解和學習JavaScript,感興趣的朋友可以了解下
    2020-09-09
  • JS定義網(wǎng)頁表單提交(submit)的方法

    JS定義網(wǎng)頁表單提交(submit)的方法

    這篇文章主要介紹了JS定義網(wǎng)頁表單提交(submit)的方法,實例分析了javascript實現(xiàn)表單提交執(zhí)行自定義函數(shù)的方法,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • es6 filter() 數(shù)組過濾方法總結(jié)

    es6 filter() 數(shù)組過濾方法總結(jié)

    這篇文章主要介紹了es6 filter() 數(shù)組過濾方法總結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • 詳解前端自動化工具gulp自動添加版本號

    詳解前端自動化工具gulp自動添加版本號

    這篇文章主要介紹了詳解前端自動化工具gulp自動添加版本號 ,非常具有實用價值,需要的朋友可以參考下。
    2016-12-12
  • Bootstrap每天必學之標簽頁(Tab)插件

    Bootstrap每天必學之標簽頁(Tab)插件

    Bootstrap每天必學之標簽頁(Tab)插件,通過這個插件您可以把內(nèi)容放置在標簽頁或者是膠囊式標簽頁甚至是下拉菜單標簽頁中,感興趣的小伙伴們可以參考一下
    2016-04-04
  • JavaScript內(nèi)置對象math,global功能與用法實例分析

    JavaScript內(nèi)置對象math,global功能與用法實例分析

    這篇文章主要介紹了JavaScript內(nèi)置對象math,global功能與用法,結(jié)合實例形式分析了javascript中內(nèi)置對象math與global的基本概念、功能及使用方法,需要的朋友可以參考下
    2019-06-06
  • JS中showModalDialog關閉子窗口刷新主窗口用法詳解

    JS中showModalDialog關閉子窗口刷新主窗口用法詳解

    這篇文章主要介紹了JS中showModalDialog關閉子窗口刷新主窗口用法,結(jié)合具體實例形式較為詳細的分析了showModalDialog常見用法與相關使用技巧,需要的朋友可以參考下
    2017-03-03
  • js獲取當前日期代碼適用于網(wǎng)頁頭部

    js獲取當前日期代碼適用于網(wǎng)頁頭部

    大家在瀏覽網(wǎng)頁時可能會注意到網(wǎng)頁頭部有個不錯的時間在顯示,看起來感覺不錯于是自己也實現(xiàn)了一個,下面是具體的代碼,感興趣的朋友可以參考下哈
    2013-06-06
  • 用javascript修復瀏覽器中頭痛問題的方法整理篇[譯]

    用javascript修復瀏覽器中頭痛問題的方法整理篇[譯]

    我們提倡無論何時都盡可能地使用CSS,這樣我們更容易取得成功.現(xiàn)在瀏覽器對CSS的支持已經(jīng)非常好,肯定足以讓你用來控制你的網(wǎng)頁布局與排版.但,即使如此,還是有某些頁面元素會在不同的瀏覽器下表現(xiàn)也不一樣.
    2008-11-11
  • JS數(shù)組降維的幾種方法詳解

    JS數(shù)組降維的幾種方法詳解

    這篇文章主要介紹了JS數(shù)組降維的幾種方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04

最新評論