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中音频wavesurfer.js的使用方法
Feb 20 Vue.js
快速解决vue2+vue-cli3项目ie兼容的问题
Nov 17 Vue.js
vue+iview实现文件上传
Nov 17 Vue.js
vue 通过base64实现图片下载功能
Dec 19 Vue.js
vue绑定class的三种方法
Dec 24 Vue.js
vue项目中openlayers绘制行政区划
Dec 24 Vue.js
Vue实现省市区三级联动
Dec 27 Vue.js
Vue仿Bibibili首页的问题
Jan 21 Vue.js
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
Feb 20 Vue.js
vue完美实现el-table列宽自适应
May 08 Vue.js
Vue的列表之渲染,排序,过滤详解
Feb 24 Vue.js
vue如何清除浏览器历史栈
May 25 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
phpmailer中文乱码问题的解决方法
2014/04/22 PHP
ThinkPHP实现ajax仿官网搜索功能实例
2014/12/02 PHP
PHP使用PDO调用mssql存储过程的方法示例
2017/10/07 PHP
php输出文字乱码的解决方法
2019/10/04 PHP
js动态加载以及确定加载完成的代码
2011/07/31 Javascript
关于jQuery UI 使用心得及技巧
2012/10/10 Javascript
jQuery实现延迟跳转的方法
2015/06/05 Javascript
微信企业号开发之微信考勤Cookies的使用
2015/09/11 Javascript
基于javascript实现图片滑动效果
2016/05/07 Javascript
Node.js实现文件上传
2016/07/05 Javascript
JS实现放大、缩小及拖拽图片的方法【可兼容IE、火狐】
2016/08/23 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
网页瀑布流布局jQuery实现代码
2016/10/21 Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
2017/11/03 Javascript
浅析vue-router jquery和params传参(接收参数)$router $route的区别
2018/08/03 jQuery
clipboard在vue中的使用的方法示例
2018/10/19 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
2019/11/13 Javascript
js Math数学简单使用操作示例
2020/03/13 Javascript
JS实现简易留言板(节点操作)
2020/03/16 Javascript
Python切片用法实例教程
2014/09/08 Python
Python多线程编程(六):可重入锁RLock
2015/04/05 Python
Python判断文件和文件夹是否存在的方法
2015/05/21 Python
合并百度影音的离线数据( with python 2.3)
2015/08/04 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
2019/05/03 Python
django的model操作汇整详解
2019/07/26 Python
python实现发送form-data数据的方法详解
2019/09/27 Python
Django DRF APIView源码运行流程详解
2020/08/17 Python
html5跨域通讯之postMessage的用法总结
2013/11/07 HTML / CSS
德国价格合理的品牌商品购物网站:averdo
2019/03/21 全球购物
泰国排名第一的家居用品中心:HomePro
2020/11/18 全球购物
生物化工专业个人自荐信
2013/09/26 职场文书
医师定期考核实施方案
2014/05/07 职场文书
党员批评与自我批评(5篇)
2014/09/23 职场文书
初中开学典礼新闻稿
2015/07/17 职场文书
领导干部学习心得体会
2016/01/23 职场文书
CSS浮动引起的高度塌陷问题
2022/08/05 HTML / CSS