vue项目 get方式传参数组

本文介绍如何在Vue项目中使用qs插件解决GET请求中数组参数格式问题,通过在request.interceptor中添加代码,实现从arr[]=1&arr[]=2到arr=1&arr=2的转换,确保后端能正确解析。
摘要由CSDN通过智能技术生成

背景:多选下拉框的查询,需要给后端传的是个数组(get方式)
在这里插入图片描述
get方法传参数组的时候,会出现arr[]=1&arr[]=2这样的情况,这样的传参,后端是接收不到的,无法解析。

那么我们就需要转换成这样的格式:arr=1&arr=2

解决方法:

1、这里,需要安装一个插件----qs插件,在vue项目中npm add qs即可。
2、在拦截器文件(一般是自己项目中封装的request.js文件)中引入import qs from 'qs'
并加入下面这段重点代码:

// request interceptor
service.interceptors.request.use(
  config => {
    // do something before request is sent
    if (store.getters.token) {
      config.headers['token'] = store.getters.token
    }

    // get方法传递数组的处理(重点代码)
    if (config.method === 'get') {
      config.paramsSerializer = function(params) {
        return qs.stringify(params, { arrayFormat: 'repeat' })
      }
    }

    return config
  },
  error => {
    // do something with request error
    console.log(error) // for debug
    return Promise.reject(error)
  }
)

备注:

qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' })
// 'a[0]=b&a[1]=c'
qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' })
// 'a[]=b&a[]=c'
qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' })
// 'a=b&a=c'
qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'comma' })
// 'a=b,c'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值