vue中get方法\post方法如何传递数组参数
背景:项目中突然来了一个post方法传array数组的参数,且该数组参数是循环遍历所有元素按照get方法传参形式进行参数传递的,对于小白的我真的是一个打击呀。但是为了完成任务不能放弃,so通过搜索找到了解答方式。第一部分:vue中get方法如何传递数组参数...
·
背景:项目中突然来了一个post方法传array数组的参数,且该数组参数是循环遍历所有元素按照get方法传参形式进行参数传递的,对于小白的我真的是一个打击呀。但是为了完成任务不能放弃,so通过搜索找到了解答方式(在这里非常感谢我的小伙伴雷总的热心帮助以及bubuko.com的解答)。
第一部分:vue中get方法如何传递数组参数
(该部分转载:http://www.bubuko.com/infodetail-3172099.html)
直接放在对象中传递数组
export function getCrApplicationList(data) {
var test = [‘111‘, ‘222‘]
return request({
url: ‘/applicant/CrApplication/List‘,
method: ‘get‘,
params: { test }
})
}
传递的参数格式如下:
但是这样的话后台是取不到值的,我们需要把数组变成如下这种格式:
test:111
test:222
首先找到axios.js,加如下代码:
if (config.method === ‘get‘) {
// 如果是get请求,且params是数组类型如arr=[1,2],则转换成arr=1&arr=2
config.paramsSerializer = function(params) {
return qs.stringify(params, { arrayFormat: ‘repeat‘ })
}
}
如果get请求中参数是数组格式,则数组里每一项的属性名重复使用。
效果如下:
同样的,post方法传get方法的传参格式时候通用该方法。
下面列出我的接口格式及解决方法的源码:
封装的接口部分:
/**
* @description 以post请求方式,传递array[]数组
* @param {Array[integer]} idList
* @param {integer} orderId
* @return {*}
*/
export function doFuncTest(idListVal, orderId) {
return request({
url: '/xxxx/xxx',
method: 'post',
baseURL: '//192.168.xxx.xxx:xxxx/xxx/xxx/xxx',
params: {
idList: idListVal,
orderId: orderId
}
})
}
拦截器部分:
if (config.method === 'post') {
config.paramsSerializer = function(params) {
return qs.stringify(params, { arrayFormat: 'repeat' })
}
}
最后的访问地址如下:
http://192.168.xxx.xxx:xxxx/xxx/xxx/xxx/xxxx/xxx?idList=261&idList=262&orderId=59
完结!
静下心来的时候敲敲代码也是能够找到快乐的,哈哈哈
更多推荐
已为社区贡献8条内容
所有评论(0)