vue 中 get / delete 传递数组参数方法


Posted in Vue.js onMarch 23, 2021

在前后端交互的时候,有时候需要通过 get 或者 delete 传递一个数组给后台,但是这样直接传递后台无法接收数据,因为在传递的过程中数组参数会被转译,结果如下:

参数:{ name : [ 1, 2, 3 ] }
转译效果:http://aaa.com?name[]=1&name[]=2&name[]=3
目标效果:http://aaa.com?name=1&name=2&name=3

解决办法:

使用 qs 插件 将数组参数序列化

1、qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' })
// 输出结果:'a[0]=b&a[1]=c'
2、qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' })
// 输出结果:'a[]=b&a[]=c'
3、qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' })
// 输出结果:'a=b&a=c'
4、qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'comma' })
// 输出结果:'a=b,c'

安装

npm install qs

使用

//在 axios 请求拦截器里面
import qs from 'qs'
axios.interceptors.request.use(request => {
 if (request.method === 'delete' || request.method === 'get') {
 request.paramsSerializer = function(params) {
  return qs.stringify(params, { arrayFormat: 'repeat' })
 }
 }
 return request
},(error) =>{
 return Promise.reject(error);
})

刚刚接触Vue2.5以上版本的新手程序员 不了解怎样传递参数的仅供参考

<!DOCTYPE html>
<html lang="en">
 
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
 
<body>
/*为了前后端更好的交互效果 引入axios.js 这个js文件*/
  <script type="text/javascript" src="js/axios.js"></script>
  <script type="text/javascript">
    // axios请求参数传递
 
    // axios get请求传参
    // 传统格式的 get 请求
     axios.get('http://localhost:3000/axios?id=123')
      .then(function(ret){
      console.log(ret.data)
     })
     // restful 格式的 get 请求
     axios.get('http://localhost:3000/axios/123')
      .then(function(ret){
      console.log(ret.data)
     })
     // 携带参数的 get 请求
    axios.get('http://localhost:3000/axios', {
      params: {
        id: 789
      }
    }).then(function(ret) {
      console.log(ret.data)
    })
 
    // // axios delete 请求传参
    axios.delete('http://localhost:3000/axios', {
      params: {
        id: 111
      }
    }).then(function(ret) {
      console.log(ret.data)
    })
 
    //-----------------------------------
 
    // 使用 axios 进行 post 请求,默认传递 json 数据
    axios.post('http://localhost:3000/axios', {
        'uname': 'lisi',
        'pwd': 123
      }).then(function(ret) {
        console.log(ret.data)
      })
      // 使用 axios 进行 post 请求,传递 form 表单数据
       var params = new URLSearchParams();
       params.append('uname', 'zhangsan');
       params.append('pwd', '111');
       axios.post('http://localhost:3000/axios', params)
        .then(function (ret) {
         console.log(ret.data)
        })
 
    // axios put 请求传参
    axios.put('http://localhost:3000/axios/123', {
      uname: 'lisi',
      pwd: 123
    }).then(function(ret) {
      console.log(ret.data)
    })
 
 
 
    // 对于 axios 来说,在 get 和 delete 请求中,参数要放入到 params 属性下
    // 在 post 和 put 请求中,参数直接放入到 对象中
  </script>
</body>
 
</html>

向后台发起请求的代码

app.get('/adata', (req, res) => {
  res.send('Hello axios!')
})
app.get('/axios', (req, res) => {
  res.send('axios get 传递参数' + req.query.id)
})
app.get('/axios/:id', (req, res) => {
  res.send('axios get (Restful) 传递参数' + req.params.id)
})
app.delete('/axios', (req, res) => {
  res.send('axios get 传递参数' + req.query.id)
})
app.delete('/axios/:id', (req, res) => {
  res.send('axios get (Restful) 传递参数' + req.params.id)
})
app.post('/axios', (req, res) => {
  res.send('axios post 传递参数' + req.body.uname + '---' + req.body.pwd)
})
app.put('/axios/:id', (req, res) => {
  res.send('axios put 传递参数' + req.params.id + '---' + req.body.uname + '---' + req.body.pwd)
})

关于vue 中 get / delete 传递数组参数方法的文章就介绍到这了。

Vue.js 相关文章推荐
vue中封装axios并实现api接口的统一管理
Dec 25 Vue.js
vue中实现点击空白区域关闭弹窗的两种方法
Dec 30 Vue.js
Vue看了就会的8个小技巧
Jan 21 Vue.js
Vue 事件的$event参数=事件的值案例
Jan 29 Vue.js
vue打开新窗口并实现传参的图文实例
Mar 04 Vue.js
关于vue中如何监听数组变化
Apr 28 Vue.js
vue2实现provide inject传递响应式
May 21 Vue.js
HTML+VUE分页实现炫酷物联网大屏功能
May 27 Vue.js
vue代码分块和懒加载非必要资源文件
Apr 11 Vue.js
vue选项卡切换的实现案例
Apr 11 Vue.js
解决vue中provide inject的响应式监听
Apr 19 Vue.js
解决vue自定义组件@click点击失效问题
Apr 30 Vue.js
使用Vue.js和MJML创建响应式电子邮件
vue+flask实现视频合成功能(拖拽上传)
Mar 04 #Vue.js
vue打开新窗口并实现传参的图文实例
Mar 04 #Vue.js
Vue-router编程式导航的两种实现代码
Mar 04 #Vue.js
手写Vue2.0 数据劫持的示例
Mar 04 #Vue.js
vue3.0封装轮播图组件的步骤
Mar 04 #Vue.js
vue3.0 项目搭建和使用流程
Mar 04 #Vue.js
You might like
php中通过smtp发邮件的类,测试通过
2007/01/22 PHP
常用的php ADODB使用方法集锦
2008/03/25 PHP
PHP 5.3新特性命名空间规则解析及高级功能
2010/03/11 PHP
Laravel中Trait的用法实例详解
2016/03/16 PHP
详解如何实现Laravel的服务容器的方法示例
2019/04/15 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
JS BASE64编码 window.atob(), window.btoa()
2021/03/09 Javascript
初学prototype,发个JS接受URL参数的代码
2006/09/25 Javascript
修改发贴的编辑功能
2007/03/07 Javascript
jQuery使用手册之一
2007/03/24 Javascript
js对象数组按属性快速排序
2011/01/31 Javascript
鼠标滑过出现预览的大图提示效果
2014/02/26 Javascript
改变状态栏文字的js代码
2014/06/13 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
2015/05/11 Javascript
JS模态窗口返回值兼容问题的完美解决方法
2016/05/28 Javascript
微信小程序实现根据字母选择城市功能
2017/08/16 Javascript
详解使用React进行组件库开发
2018/02/06 Javascript
微信小程序用户拒绝授权的处理方法详解
2019/09/20 Javascript
vue form表单post请求结合Servlet实现文件上传功能
2021/01/22 Vue.js
[02:25]DOTA2英雄基础教程 生死判决瘟疫法师
2013/12/06 DOTA
[01:10:02]IG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python调用新浪微博API项目实践
2014/07/28 Python
Python中eval带来的潜在风险代码分析
2017/12/11 Python
PyQt4实现下拉菜单可供选择并打印出来
2018/04/20 Python
Python使用re模块验证危险字符
2020/05/21 Python
Python3创建Django项目的几种方法(3种)
2020/06/03 Python
Django静态文件加载失败解决方案
2020/08/26 Python
Python爬虫+tkinter界面实现历史天气查询的思路详解
2021/02/22 Python
英国家喻户晓的折扣商场:TK Maxx
2017/05/26 全球购物
会计自荐书
2013/12/02 职场文书
竞选学生会主席演讲稿
2014/04/24 职场文书
工商管理专业毕业生求职信
2014/05/26 职场文书
2014年保管员工作总结
2014/11/18 职场文书
2014年项目工作总结
2014/11/24 职场文书
2014年卫生工作总结
2014/11/27 职场文书
少先大队干部竞选稿
2015/11/20 职场文书