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 $router和$route的区别详解
Dec 02 Vue.js
浅谈Vue使用Elementui修改默认的最快方法
Dec 05 Vue.js
Vue使用鼠标在Canvas上绘制矩形
Dec 24 Vue.js
vue+openlayers绘制省市边界线
Dec 24 Vue.js
vue中activated的用法
Jan 03 Vue.js
详解为什么Vue中的v-if和v-for不建议一起用
Jan 13 Vue.js
vue如何使用rem适配
Feb 06 Vue.js
手写Vue2.0 数据劫持的示例
Mar 04 Vue.js
Vue Element UI自定义描述列表组件
May 18 Vue.js
vue Element-ui表格实现树形结构表格
Jun 07 Vue.js
vue实现在data里引入相对路径
Jun 05 Vue.js
vue3 自定义图片放大器效果的示例代码
Jul 23 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
神族 Protoss 历史背景
2020/03/14 星际争霸
一个自定义位数的php多用户计数器代码
2007/03/11 PHP
PHP中冒号、endif、endwhile、endfor使用介绍
2010/04/28 PHP
PHP STRING 陷阱原理说明
2010/07/24 PHP
PHP将整个网站生成HTML纯静态网页的方法总结
2012/02/05 PHP
php通过function_exists检测函数是否存在的方法
2015/03/18 PHP
PHP Cookei记录用户历史浏览信息的代码
2016/02/03 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
当jQuery遭遇CoffeeScript的时候 使用分享
2011/09/17 Javascript
NodeJS学习笔记之Http模块
2015/01/13 NodeJs
jQuery判断一个元素是否可见的方法
2015/06/05 Javascript
网页收藏夹显示ICO图标(代码少)
2015/08/04 Javascript
基于jQuery实现Div窗口震动特效代码-代码简单
2015/08/28 Javascript
深入学习JavaScript对象
2015/10/13 Javascript
jQuery.trim() 函数及trim()用法详解
2015/10/26 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
2017/01/20 Javascript
Angular4 中内置指令的基本用法
2017/07/31 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
2019/08/20 Javascript
layer关闭弹出窗口触发表单提交问题的处理方法
2019/09/25 Javascript
javascript设计模式之迭代器模式
2020/01/30 Javascript
[52:15]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS LGD-GAMING
2014/05/23 DOTA
[01:03:27]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python list转dict示例分享
2014/01/28 Python
Python bsddb模块操作Berkeley DB数据库介绍
2015/04/08 Python
python实现kMeans算法
2017/12/21 Python
python之pyqt5通过按钮改变Label的背景颜色方法
2019/06/13 Python
十行代码使用Python写一个USB病毒
2019/06/21 Python
Python利用神经网络解决非线性回归问题实例详解
2019/07/19 Python
Python语言异常处理测试过程解析
2020/01/08 Python
PyQt5中QSpinBox计数器的实现
2021/01/18 Python
马来西亚网上购物:Youbeli
2018/03/30 全球购物
Right-on官方网站:日本知名的休闲服装品牌
2019/07/12 全球购物
Edwaybuy西班牙:小米在线商店
2019/12/04 全球购物
我的中国梦演讲稿400字
2014/08/19 职场文书
关于运动会广播稿200字
2014/10/08 职场文书
2015年党建工作目标责任书
2015/05/08 职场文书