最近在项目中用vue与后台对接时遇到一些问题发现利用vue自带的http方式传递后台参数时会出现一些问题。
在控制台的network 我们会发现本次发送参数使用的是payload,而并不是以前我们利用ajax等传后台参数时所用的from data形式,这就导致后台利用以前的方式是无法接收到参数的。此时我们需要将请求头进行更改,将Content-Type改为application/x-www-form-urlencoded;charset=UTF-8 这样就会变为form data 方式提交数据。在请求中
Vue.$http({
url: '/user',
method: 'post',
data: {
firstName: 'Fred',
lastName: 'Flintstone'
},
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
之后请求数据已成功转为from data ,若在运行时from data中参数形式为
{“name”:“zhangsan”,“age”:16} : 而不是常规的
name: zhangsan
age : 16 这种形式,需要在请求中更改参数格式利用transformRequest
Vue.$http({
url: '/user',
method: 'post',
data: {
firstName: 'Fred',
lastName: 'Flintstone'
},
transformRequest: [function (data) {
// Do whatever you want to transform the data
let ret = ''
for (let it in data) {
ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
}
return ret
}],
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})