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+vant实现购物车全选和反选功能
Nov 17 Vue.js
Vue router安装及使用方法解析
Dec 02 Vue.js
如何在vue中使用kindeditor富文本编辑器
Dec 19 Vue.js
vue导入.md文件的步骤(markdown转HTML)
Dec 31 Vue.js
vscode自定义vue模板的实现
Jan 27 Vue.js
vue实现禁止浏览器记住密码功能的示例代码
Feb 03 Vue.js
Vue单页面应用中实现Markdown渲染
Feb 14 Vue.js
Vue中避免滥用this去读取data中数据
Mar 02 Vue.js
vue打开新窗口并实现传参的图文实例
Mar 04 Vue.js
Vue实现导入Excel功能步骤详解
Jul 03 Vue.js
vue如何实现关闭对话框后刷新列表
Apr 08 Vue.js
vue实现在data里引入相对路径
Jun 05 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 数据结构 算法描述 冒泡排序 bubble sort
2011/07/10 PHP
php汉字转拼音的示例
2014/02/27 PHP
PHP实现获取客户端IP并获取IP信息
2015/03/17 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
laravel Model 执行事务的实现
2019/10/10 PHP
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
jquery nth-child()选择器的简单应用
2010/07/10 Javascript
Ext JS 4官方文档之三 -- 类体系概述与实践
2012/12/16 Javascript
javascript正则表达式之search()用法实例
2015/01/19 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
2015/03/25 Javascript
javascript实现控制的多级下拉菜单
2015/07/05 Javascript
bootstrap和jQuery.Gantt的css冲突 如何解决
2016/05/29 Javascript
js实现StringBuffer的简单实例
2016/09/02 Javascript
js正则表达式验证表单【完整版】
2017/03/06 Javascript
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
2017/04/04 jQuery
JavaScript使用原型和原型链实现对象继承的方法详解
2017/04/05 Javascript
nodejs之get/post请求的几种方式小结
2017/07/26 NodeJs
解决canvas画布使用fillRect()时高度出现双倍效果的问题
2017/08/03 Javascript
bootstrap table表格插件之服务器端分页实例代码
2018/09/12 Javascript
Openlayers学习之地图比例尺控件
2020/09/28 Javascript
uni-app 自定义底部导航栏的实现
2020/12/11 Javascript
Python应用03 使用PyQT制作视频播放器实例
2016/12/07 Python
Python中文分词工具之结巴分词用法实例总结【经典案例】
2017/04/15 Python
解决Pycharm中import时无法识别自己写的程序方法
2018/05/18 Python
python常用排序算法的实现代码
2019/11/08 Python
详解Python中namedtuple的使用
2020/04/27 Python
Python网络爬虫四大选择器用法原理总结
2020/06/01 Python
Python读取二进制文件代码方法解析
2020/06/22 Python
python3.7.3版本和django2.2.3版本是否可以兼容
2020/09/01 Python
python如何实现图片压缩
2020/09/11 Python
HTML5的结构和语义(1):前言
2008/10/17 HTML / CSS
公司档案管理制度
2015/08/05 职场文书
简历自我评价范文
2019/04/24 职场文书
html中显示特殊符号(附带特殊字符对应表)
2021/06/21 HTML / CSS
再谈python_tkinter弹出对话框创建
2022/03/20 Python
Mysql调整优化之四种分区方式以及组合分区
2022/04/13 MySQL