日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

ajax jq 图片上传请求头_全面分析前端的网络请求方式:Ajax ,jQuery ,axios,fetch

發布時間:2025/1/21 HTML 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ajax jq 图片上传请求头_全面分析前端的网络请求方式:Ajax ,jQuery ,axios,fetch 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

鏈接:https://juejin.im/post/5c9ac607f265da6103588b31

一、前端進行網絡請求的關注點

大多數情況下,在前端發起一個網絡請求我們只需關注下面幾點:

  • 傳入基本參數(url,請求方式)
  • 請求參數、請求參數類型
  • 設置請求頭
  • 獲取響應的方式
  • 獲取響應頭、響應狀態、響應結果
  • 異常處理
  • 攜帶cookie設置
  • 跨域請求

二、前端進行網絡請求的方式

  • form表單、ifream、刷新頁面
  • Ajax - 異步網絡請求的開山鼻祖
  • jQuery - 一個時代
  • fetch - Ajax的替代者
  • axios、request等眾多開源庫

三、關于網絡請求的疑問

  • Ajax的出現解決了什么問題
  • 原生Ajax如何使用
  • jQuery的網絡請求方式
  • fetch的用法以及坑點
  • 如何正確的使用fetch
  • 如何選擇合適的跨域方式

帶著以上這些問題、關注點我們對幾種網絡請求進行一次全面的分析。

四、Ajax的出現解決了什么問題

在Ajax出現之前,web程序是這樣工作的:

這種交互的的缺陷是顯而易見的,任何和服務器的交互都需要刷新頁面,用戶體驗非常差,Ajax的出現解決了這個問題。Ajax全稱Asynchronous JavaScript + XML(異步JavaScript和XML),使用Ajax,網頁應用能夠快速地將增量更新呈現在用戶界面上,而不需要重載(刷新)整個頁面。

Ajax本身不是一種新技術,而是用來描述一種使用現有技術集合實現的一個技術方案,瀏覽器的XMLHttpRequest是實現Ajax最重要的對象(IE6以下使用ActiveXObject)。

盡管X在Ajax中代表XML, 但由于JSON的許多優勢,比如更加輕量以及作為Javascript的一部分,目前JSON的使用比XML更加普遍。

五、原生Ajax的用法

這里主要分析XMLHttpRequest對象,下面是它的一段基礎使用:

下面分別對XMLHttpRequest對象常用的的函數、屬性、事件進行分析。

函數

open

用于初始化一個請求,用法:

xhr.open(method, url, async);
  • method:請求方式,如get、post
  • url:請求的url
  • async:是否為異步請求

send

用于發送HTTP請求,即調用該方法后HTTP請求才會被真正發出,用法:

xhr.send(param)
  • param:http請求的參數,可以為string、Blob等類型。

abort

用于終止一個ajax請求,調用此方法后readyState將被設置為0,用法:

xhr.abort()

setRequestHeader

用于設置HTTP請求頭,此方法必須在open()方法和send()之間調用,用法:

xhr.setRequestHeader(header, value);

getResponseHeader

用于獲取http返回頭,如果在返回頭中有多個一樣的名稱,那么返回的值就會是用逗號和空格將值分隔的字符串,用法:

var header = xhr.getResponseHeader(name);

屬性

readyState

用來標識當前XMLHttpRequest對象所處的狀態,XMLHttpRequest對象總是位于下列狀態中的一個:

status

表示http請求的狀態, 初始值為0。如果服務器沒有顯式地指定狀態碼, 那么status將被設置為默認值, 即200。

responseType

表示響應的數據類型,并允許我們手動設置,如果為空,默認為text類型,可以有下面的取值:

response

返回響應的正文,返回的類型由上面的responseType決定。

withCredentials

ajax請求默認會攜帶同源請求的cookie,而跨域請求則不會攜帶cookie,設置xhr的withCredentials的屬性為true將允許攜帶跨域cookie。

事件回調

onreadystatechange

xhr.onreadystatechange = callback;

當readyState屬性發生變化時,callback會被觸發。

onloadstart

xhr.onloadstart = callback;

在ajax請求發送之前(readyState==1后, readyState==2前),callback會被觸發。

onprogress

xhr.onprogress = function(event){ console.log(event.loaded / event.total);}

回調函數可以獲取資源總大小total,已經加載的資源大小loaded,用這兩個值可以計算加載進度。

onload

xhr.onload = callback;

當一個資源及其依賴資源已完成加載時,將觸發callback,通常我們會在onload事件中處理返回值。

異常處理

onerror

xhr.onerror = callback;

當ajax資源加載失敗時會觸發callback。

ontimeout

xhr.ontimeout = callback;

當進度由于預定時間到期而終止時,會觸發callback,超時時間可使用timeout屬性進行設置。

六、jQuery對Ajax的封裝

在很長一段時間里,人們使用jQuery提供的ajax封裝進行網絡請求,包括$.ajax、$.get、$.post等,這幾個方法放到現在,依然很實用。

$.ajax只接收一個參數,這個參數接收一系列配置,其自己封裝了一個jqXHR對象,有興趣可以閱讀一下jQuary-ajax 源碼

常用配置:

url

當前頁地址。發送請求的地址。

type

類型:String 請求方式 ("POST" 或"GET"), 默認為 "GET"。注意:其它HTTP請求方法,如PUT和 DELETE也可以使用,但僅部分瀏覽器支持。

timeout

類型:Number設置請求超時時間(毫秒)。此設置將覆蓋全局設置。

success

類型:Function 請求成功后的回調函數。

jsonp

在一個jsonp請求中重寫回調函數的名字。這個值用來替代在"callback=?"這種GET或POST請求中URL參數里的"callback"部分。

error 類型:Function 。請求失敗時調用此函數。

注意:源碼里對錯誤的判定:

isSuccess = status >= 200 && status < 300 || status === 304;復制代碼

返回值除了這幾個狀態碼都會進error回調。

dataType

data

類型:String 使用JSON.stringify轉碼

complete

類型:Function請求完成后回調函數 (請求成功或失敗之后均調用)。

async

類型:Boolean 默認值:true。默認設置下,所有請求均為異步請求。如果需要發送同步請求,請將此選項設置為 false。

contentType

類型:String默認值: "application/x-www-form-urlencoded"。發送信息至服務器時內容編碼類型。

鍵值對這樣組織在一般的情況下是沒有什么問題的,這里說的一般是,不帶嵌套類型JSON,也就是 簡單的JSON,形如這樣:

{ a: 1, b: 2, c: 3}

但是在一些復雜的情況下就有問題了。 例如在 Ajax中你要傳一個復雜的 json 對像,也就說是對象嵌數組,數組中包括對象,你這樣傳:application/x-www-form-urlencoded 這種形式是沒有辦法將復雜的JSON組織成鍵值對形式。

{ data: { a: [{ x: 2 }] }}

可以用如下方式傳遞復雜的json對象

$.ajax({ dataType: 'json', contentType: 'application/json', data: JSON.stringify({a: [{b:1, a:1}]})})

七、jQuery的替代者

近年來前端MV*的發展壯大,人們越來越少的使用jQuery,我們不可能單獨為了使用jQuery的Ajax api來單獨引入他,無可避免的,我們需要尋找新的技術方案。

尤雨溪在他的文檔中推薦大家用axios進行網絡請求。axios基于Promise對原生的XHR進行了非常全面的封裝,使用方式也非常的優雅。另外,axios同樣提供了在node環境下的支持,可謂是網絡請求的首選方案。

未來必定還會出現更優秀的封裝,他們有非常周全的考慮以及詳細的文檔,這里我們不多做考究,我們把關注的重點放在更底層的APIfetch。

Fetch API是一個用用于訪問和操縱HTTP管道的強大的原生 API。

這種功能以前是使用 XMLHttpRequest實現的。Fetch提供了一個更好的替代方法,可以很容易地被其他技術使用,例如 Service Workers。Fetch還提供了單個邏輯位置來定義其他HTTP相關概念,例如CORS和HTTP的擴展。

可見fetch是作為XMLHttpRequest的替代品出現的。

使用fetch,你不需要再額外加載一個外部資源。但它還沒有被瀏覽器完全支持,所以你仍然需要一個polyfill。

八、fetch的使用

一個基本的 fetch請求:

Fetch API提供了一個全局的fetch()方法,以及幾個輔助對象來發起一個網絡請求。

  • fetch()

fetch()方法用于發起獲取資源的請求。它返回一個promise,這個 promise 會在請求響應后被 resolve,并傳回 Response 對象。

  • Headers

可以通過Headers()構造函數來創建一個你自己的headers對象,相當于 response/request 的頭信息,可以使你查詢到這些頭信息,或者針對不同的結果做不同的操作。

var myHeaders = new Headers();myHeaders.append("Content-Type 與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的ajax jq 图片上传请求头_全面分析前端的网络请求方式:Ajax ,jQuery ,axios,fetch的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本黄色免费大片 | 亚洲男人影院 | 国产一区二区三区在线观看视频 | 天天爽天天做 | 亚洲精选国产 | 亚洲精品无码不卡在线播he | 国产午夜精品理论片在线 | 欧美成年人 | 中文字幕五区 | 久久久久xxxx | 熟女高潮一区二区三区 | 国产麻豆一精品一男同 | 国产精品自拍在线 | 成人午夜影院 | 91精品人妻互换一区二区 | 国产麻豆一区 | 女18毛片 | 精品视频一区二区在线 | 亚洲午夜无码av毛片久久 | 精品黑人一区二区三区久久 | 亚洲三级黄色片 | juliaann办公室丝袜大战 | 国产一页| 亚洲乱码在线观看 | 久久老司机精品视频 | 国产精品 欧美 日韩 | 爱爱激情网 | 夜夜夜综合 | 精品国产免费视频 | 免费无遮挡在线观看视频网站 | 日本黄色一区二区三区 | 麻豆高清免费国产一区 | 久久夜靖品2区 | 亚洲天堂激情 | 国语对白做受按摩的注意事项 | 免费观看亚洲 | 亚洲 欧美 自拍偷拍 | 亚洲精久久| 性色av免费 | 久久五月网 | tube日本69第一次 | 免费爱爱视频 | 久久国产a| 久久xxxx| 色久综合网| 肉色超薄丝袜脚交一区二区图片 | 少妇又紧又色又爽又刺激视频 | 一区二区三区丝袜 | 日本黄页网站免费大全 | 日本高清www免费视频 | 亚洲影视网 | 2025韩国大尺度电影 | 少妇特殊按摩高潮惨叫无码 | 欧美专区亚洲专区 | 毛片视频网站 | 婷婷综合久久 | 白浆影院 | 国模无码视频一区二区三区 | 国产suv精品一区二区四 | 黑人日批视频 | 少妇又紧又色又爽又刺激视频 | 青草视频在线播放 | 天天躁日日躁狠狠躁免费麻豆 | 国产综合av| 亚洲国产欧美日韩在线 | 久久精品免费看 | 深夜激情网| 国产熟妇乱xxxxx大屁股网 | 亚洲专区区免费 | 日韩欧美高清在线 | 一级性生活免费视频 | 爽爽影院在线 | 久久精品国产亚洲AV黑人 | 久久免费视频精品 | 亚洲青草视频 | 丰满少妇在线观看bd | 国产孕交| 91av视频在线 | 福利精品 | 国产主播专区 | 视频在线观看电影完整版高清免费 | 91精品人妻一区二区 | 日韩和一区二区 | 一本大道av伊人久久综合 | 香蕉视频一级片 | 飘花影院伦理片 | 乱岳 | 四虎精品在线观看 | 亚洲美女黄色片 | 欧美丰满老妇 | 网站一区二区 | 午夜xxx| 日韩精品免费一区二区三区竹菊 | 国产亚洲毛片 | 婷婷777| 色诱久久av | 色婷婷在线影院 | 国产一区二区av在线 | 黄色av免费在线看 |