angular中的post請求處理示例詳解
前言
項(xiàng)目angular中使用jQuery請求,想替換為angular自身請求,結(jié)果發(fā)現(xiàn)后臺沒法獲取參數(shù),所以,查詢資料分析一下,做個總結(jié)。
步驟如下:
首先,angular和jQuery中請求是不同的。如下:
- jQuery:
請求contentType是:
application/x-www-form-urlencoded; charset=UTF-8
該類型數(shù)據(jù)被編碼成以 '&' 分隔的鍵-值對, 同時以 '=' 分隔鍵和值. 非字母或數(shù)字的字符會被百分比編碼: 這也就是為什么這種類型不支持二進(jìn)制數(shù)據(jù)(應(yīng)使用 multipart/form-data 代替)。
data參數(shù)是處理過的:
// json對象 { a : 3, b : 2 } // 將json對象處理為 "a=3&b=2"
- Angular:
請求contentType:
application/json
data參數(shù):
// json對象 {a: 3,c: 2}
綜上來看,angular提交后臺是json,不是表單數(shù)據(jù)。我們需要把json對象轉(zhuǎn)換為參數(shù)拼接,提交后臺時就是表單數(shù)據(jù)了:
/** * 將application/json轉(zhuǎn)換為application/x-www-form-urlencoded * @param data */ handlerPostParams(data) { const params = []; for (const key in data) { if (data[key] && !isNull(data[key])) { if (data[key] instanceof Array) { for (let i = 0; i < data[key].length; i++) { if (data[key][i] && !isNull(data[key][i])) { const value = data[key][i]; const name = key + '[' + i + ']'; const innerObj = {}; innerObj[name] = value; params.push(this.handlerPostParams(innerObj)); } } } else if (data[key] instanceof Object) { for (const k in data[key]) { if (data[key][k] && !isNull(data[key][k])) { const value = data[key][k]; const name = key + '[' + k + ']'; const innerObj = {}; innerObj[name] = value; params.push(this.handlerPostParams(innerObj)); } } } else { const param = encodeURIComponent(key) + '=' + encodeURIComponent(data[key]); params.push(param); } } } return params.join('&'); }
總結(jié)
到此這篇關(guān)于angular中post請求處理的文章就介紹到這了,更多相關(guān)angular post請求處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Angular4綁定html內(nèi)容出現(xiàn)警告的處理方法
這篇文章主要給大家介紹了關(guān)于Angular4綁定html內(nèi)容出現(xiàn)警告的處理方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11Angular.js中定時器循環(huán)的3種方法總結(jié)
這篇文章主要給大家總結(jié)了angular.js中定時器循環(huán)的3種方法,分別是利用$interlval實(shí)現(xiàn)、$timeout的遞歸調(diào)用來實(shí)現(xiàn)以及$timeout借助arguments.callee來實(shí)現(xiàn),每種方法都給出了詳細(xì)的示例艾瑪供大家學(xué)習(xí)參考,需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。2017-04-04AngularJs 利用百度地圖API 定位當(dāng)前位置 獲取地址信息
本文主要介紹了AngularJs 利用百度地圖API 定位當(dāng)前位置 獲取地址信息的方法步驟。具有一定的參考價值,下面跟著小編一起來看下吧2017-01-01