在使用axios時(shí)弦疮,注意到配置選項(xiàng)中包含params和data兩者,以為他們是相同的带欢,實(shí)則不然。
因?yàn)閜arams是添加到url的請(qǐng)求字符串中的磺浙,用于get請(qǐng)求洪囤。
而data是添加到請(qǐng)求體(body)中的徒坡, 用于post請(qǐng)求撕氧。
比如對(duì)于下面的get請(qǐng)求:
axios({
method: "get",
url: "[http://www.tuling123.com/openapi/api?key=20ff1803ff65429b809a310653c9daac]
(http://www.tuling123.com/openapi/api?key=20ff1803ff65429b809a310653c9daac)",
params: {
info: "西安天氣"
}
})
代碼塊
如果我們將params修改為data,顯然是不能請(qǐng)求成功的喇完,因?yàn)間et請(qǐng)求中不存在data這個(gè)選項(xiàng)伦泥。
1、HTTP請(qǐng)求過程中锦溪,get請(qǐng)求:表單參數(shù)以name=value&name1=value1的形式附到url的后面不脯;
2、post請(qǐng)求:表單參數(shù)是在請(qǐng)求體中刻诊,也是name=value&name1=value1的形式在請(qǐng)求體中防楷。
POST表單請(qǐng)求提交時(shí),使用的Content-Type是application/x-www-form-urlencoded则涯,而使用原生AJAX的POST請(qǐng)求如果不指定請(qǐng)求頭RequestHeader复局,默認(rèn)使用的Content-Type是text/plain;charset=UTF-8。
在html中form的Content-type默認(rèn)值:Content-type:application/x-www-form-urlencoded
如果使用ajax請(qǐng)求粟判,在請(qǐng)求頭中出現(xiàn) request payload導(dǎo)致參數(shù)的方式改變了 ,那么解決辦法就是:
headers: {'Content-Type':'application/x-www-form-urlencoded'}
或者使用ajax設(shè)置:
$.ajaxSetup({contentType: 'application/x-www-form-urlencoded'});
注意:
params 和 data 對(duì)象傳參數(shù)給后臺(tái)時(shí):字段名(key)不需要用let定義的亿昏,直接寫就可以了,但是value是變量一定要定義
id ,city ,plot , groupName都是字段名(key)不用定義
本文屬轉(zhuǎn)載档礁,純屬個(gè)人記錄