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-quill-editor插入图片路径太长问题解决方法
Jan 08 Vue.js
vue.js实现点击图标放大离开时缩小的代码
Jan 27 Vue.js
vue3.0 自适应不同分辨率电脑的操作
Feb 06 Vue.js
vue 中 get / delete 传递数组参数方法
Mar 23 Vue.js
vue中data改变后让视图同步更新的方法
Mar 29 Vue.js
简单聊聊Vue中的计算属性和属性侦听
Oct 05 Vue.js
vue中 this.$set的使用详解
Nov 17 Vue.js
Vue.js中v-bind指令的用法介绍
Mar 13 Vue.js
教你部署vue项目到docker
Apr 05 Vue.js
vue实现列表垂直无缝滚动
Apr 08 Vue.js
vue/cli 配置动态代理无需重启服务的方法
May 20 Vue.js
Vue router配置与使用分析讲解
Dec 24 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如何将log信息写入服务器中的log文件
2015/07/29 PHP
php使用preg_match()函数验证ip地址的方法
2017/01/07 PHP
等待指定时间后自动跳转或关闭当前页面的js代码
2013/07/09 Javascript
JS实现仿京东淘宝竖排二级导航
2014/12/08 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
使用Browserify配合jQuery进行编程的超级指南
2015/07/28 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
2015/11/07 Javascript
jquery插件uploadify多图上传功能实现代码
2016/08/12 Javascript
DWR3 访问WEB元素的两种方法实例详解
2017/01/03 Javascript
JavaScript实现向select下拉框中添加和删除元素的方法
2017/03/07 Javascript
webpack学习教程之publicPath路径问题详解
2017/06/17 Javascript
使用canvas进行图像编辑的实例
2017/08/29 Javascript
Vue 2.0学习笔记之使用$refs访问Vue中的DOM
2017/12/19 Javascript
vue全局自定义指令-元素拖拽的实现代码
2019/04/14 Javascript
基于JS开发微信网页录音功能的实例代码
2019/04/30 Javascript
vue引用外部JS的两种种方法
2020/01/28 Javascript
[01:09:20]NB vs NAVI Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
在GitHub Pages上使用Pelican搭建博客的教程
2015/04/25 Python
Python入门_浅谈字符串的分片与索引、字符串的方法
2017/05/16 Python
python线程池threadpool使用篇
2018/04/27 Python
pycharm运行程序时在Python console窗口中运行的方法
2018/12/03 Python
BP神经网络原理及Python实现代码
2018/12/18 Python
Python+opencv 实现图片文字的分割的方法示例
2019/07/04 Python
PHP笔试题
2012/02/22 面试题
学生思想表现的评语
2014/01/30 职场文书
渔夫的故事教学反思
2014/02/14 职场文书
校长竞聘演讲稿
2014/05/16 职场文书
2014年群众路线教育实践活动整改措施
2014/09/24 职场文书
出售房屋协议书范本
2014/10/06 职场文书
群众路线自我剖析及整改措施
2014/11/04 职场文书
四年级小学生评语
2014/12/26 职场文书
民主生活会主持词
2015/07/01 职场文书
2015年小学重阳节活动总结
2015/07/29 职场文书
小学四年级作文之人物作文
2019/11/06 职场文书
正确的理解和使用Django信号(Signals)
2021/04/14 Python
Ruby序列化和持久化存储 Marshal和Pstore介绍
2022/04/18 Ruby