组件内请求:(第一次输出)
store里的:
api里的:
config里的:(第二次输出)
结果:
orderlist,couponids里的数组变成了对象,怎么回事?
组件内请求:(第一次输出)
store里的:
api里的:
config里的:(第二次输出)
结果:
orderlist,couponids里的数组变成了对象,怎么回事?
axios遇到同样的问题, 因为接口定义入参必须是一个json, 不能用楼上的qs方案解决, 所以我写了一个递归实现了{0: xxx, 1: yyy}转换成标准数组 => [xxx, yyy]
...,
transformRequest: [
function(data){
return transformObjToArr(data);
}
]
...
...
function transformObjToArr(data, isRoot=true){
if(!data || typeof data !== 'object') return data;
let dataNew = [];
let keys = Object.keys(data);
if(keys.includes('0')){
keys.forEach(k => dataNew[k] = transformObjToArr(data[k], false));
} else {
keys.forEach(k => data[k] = transformObjToArr(data[k], false));
}
if(isRoot){
return dataNew.length ? JSON.stringify(dataNew) : JSON.stringify(data);
} else {
return dataNew.length ? dataNew : data;
}
}
8 回答4.6k 阅读✓ 已解决
6 回答3.1k 阅读✓ 已解决
5 回答2.7k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
4 回答2.7k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
我也遇到了这个问题,最终使用qs库解决了这个问题,具体代码段如下
重点是transformRequest这里,需要将参数转换一下。
上面的方案只是为了让传输看起来是json的格式,但是在实际使用过程中是因为我后端接收参数的姿势不对导致的,后端是用golang接收参数,修改了后端后原来的方式就可以解析为数组,不需要再进行这样的转换了。