XMLHttpRequest:
從XMLHttpRequest是一個(gè)Javascript對(duì)象,用于在后臺(tái)與服務(wù)器交換數(shù)據(jù)。是原生js中的一種請(qǐng)求數(shù)據(jù)的一種方法,現(xiàn)在已經(jīng)被W3C標(biāo)準(zhǔn)化收到所有的瀏覽器支持。
使用:當(dāng)我們想要使用XMLHttpRequest發(fā)送一個(gè)請(qǐng)求時(shí),通常這樣來做:
首先創(chuàng)建一個(gè) XMLHttpRequest 實(shí)例=>之后使用open方法初始化一個(gè)請(qǐng)求:=>定義回調(diào)函數(shù),只要XMLHttpRequest.readyState 屬性發(fā)生變化,就會(huì)觸發(fā)readystatechange事件,同時(shí)有一個(gè)事件處理回調(diào)函數(shù)被執(zhí)行=>最后發(fā)送請(qǐng)求,xmlhttp.open(“方式”,”地址”,”標(biāo)志位”)
ajax
作為 jQuery封裝 的 ajax 接口,使用方便,
fetch?
瀏覽器現(xiàn)在支持Fetch API,可以無須其他庫就能實(shí)現(xiàn)Ajax,F(xiàn)etch你想獲取資源,F(xiàn)etch會(huì)返回Promise,所以在獲取資源后,可以使用.then方法做你想做的。
第一個(gè)參數(shù)是設(shè)置請(qǐng)求方法(如post、put或del),F(xiàn)etch會(huì)自動(dòng)設(shè)置方法為get。
第二個(gè)參數(shù)是設(shè)置頭部。因?yàn)橐话闶褂肑SON數(shù)據(jù)格式,所以設(shè)置ContentType為application/json。
第三個(gè)參數(shù)是設(shè)置包含JSON內(nèi)容的主體。因?yàn)镴SON內(nèi)容是必須的,所以當(dāng)設(shè)置主體時(shí)會(huì)調(diào)用JSON.stringify。
實(shí)踐中,post請(qǐng)求會(huì)像下面這樣:
獲取異常,返回的promise
更有:Fetch是很好的方法,能發(fā)送和接收數(shù)據(jù)。不需要在編寫XHR請(qǐng)求或依賴于jQuery。
盡管Fetch很好,但是其錯(cuò)誤處理不是很直接。在處理之前,需要讓錯(cuò)誤信息進(jìn)入到catch方法中。
使用zlFetch庫,就不需要擔(dān)心錯(cuò)誤處理了,zlfetch庫是可以安裝的( npm install zl-fetch --save),zlFetch庫就是上例中handleResponse函數(shù),所以可以不用生成此函數(shù),不需要擔(dān)心響應(yīng)來處理數(shù)據(jù)和錯(cuò)誤,zlFetch還能無須轉(zhuǎn)換成JSON格式就能發(fā)送JSON數(shù)據(jù),下面兩個(gè)函數(shù)做了同樣事情,zlFetch加入Content-type然后將內(nèi)容轉(zhuǎn)換為JSON格式。zlFetch處理身份認(rèn)證也很容易。常用方法是在頭部加入Authorization,其值設(shè)為Bearer your-token-here。如果你需要增加token選項(xiàng),zlFetch會(huì)幫你創(chuàng)建此域。(https://www.cnblogs.com/libin-1/p/6853677.html)