做项目时,axios提交post请求 ,控制台报错,看图
意思大概就是我们url不能解析,没有序列化吧也就是,当然不能发送成功。这是我写的url
Axios.post('/api/order/create?token=' + token + '&goodsJsonStr=' + shopping
).then(res => {
console.log(res);
})
url 中的shopping为一个数组
let shopping = [
{
'goodsId': id,
'goodsName': basicInfo.name,
'number': num,
'originalPrice': basicInfo.originalPrice,
'propertyChildIds': guigecc.id + ':' + guigec.id ,
'logisticsType':0
},
{
'goodsId': id,
'goodsName': basicInfo.name,
'number': num,
'originalPrice': basicInfo.originalPrice,
'propertyChildIds': guigecc.id + ':' + guigec.id ,
'logisticsType':0
}
]
在查阅各种资料,各种文档后发现qs对参数进行序列化方式是最方便的.
其中qs模块是一件封装进axios模块里了。我们直接在需要的地方引用就可以了
import Qs from 'qs'
开始用的是JSON.stringify(),这个是众所周知的对象类型转换为字符串,然而在url中并没有很好的和原先的拼接;而qs.stringify()将对象 序列化成URL的形式,以&进行拼接。JSON是正常类型的JSON,请对比一下输出
例如:
var a = {name:'hehe',age:10};
qs.stringify(a)
// 'name=hehe&age=10'
JSON.stringify(a)
// '{"name":"hehe","age":10}'