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的mixin策略
Nov 19 Vue.js
在Vue中使用mockjs代码实例
Nov 25 Vue.js
vue实现树状表格效果
Dec 29 Vue.js
vue3中轻松实现switch功能组件的全过程
Jan 07 Vue.js
Vue实现简单计算器
Jan 20 Vue.js
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
Feb 23 Vue.js
vue+springboot实现登录验证码
May 27 Vue.js
vue 数字翻牌器动态加载数据
Apr 20 Vue.js
vue组件vue-esign实现电子签名
Apr 21 Vue.js
vue生命周期钩子函数以及触发时机
Apr 26 Vue.js
vue使用watch监听属性变化
Apr 30 Vue.js
Vue 打包后相对路径的引用问题
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的FTP学习(一)[转自奥索]
2006/10/09 PHP
PHP+MYSQL 出现乱码的解决方法
2008/08/08 PHP
php中删除字符串中最先出现某个字符的实现代码
2013/02/03 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
2013/08/16 PHP
Codeigniter操作数据库表的优化写法总结
2014/06/12 PHP
PHP+Ajax实现的检测用户名功能简单示例
2019/02/12 PHP
JS操作XML中DTD介绍及使用方法分析
2019/07/04 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
jquery中的$(document).ready()与window.onload的区别
2009/11/18 Javascript
JavaScript学习笔记之获取当前目录的实现代码
2010/12/14 Javascript
背景图跟随鼠标移动的Mootools插件实现代码
2011/12/12 Javascript
Js可拖拽放大的层拖动特效实现方法
2015/02/25 Javascript
js实现touch移动触屏滑动事件
2015/04/17 Javascript
AngularJS基础 ng-init 指令简单示例
2016/08/02 Javascript
让微信小程序支持ES6中Promise特性的方法详解
2017/06/13 Javascript
微信小程序使用wxParse解析html的方法示例
2019/01/17 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
2019/01/27 Javascript
Vue路由之JWT身份认证的实现方法
2019/08/26 Javascript
electron 如何将任意资源打包的方法步骤
2020/04/16 Javascript
JavaScript find()方法及返回数据实例
2020/04/30 Javascript
[10:24]郎朗助力完美“圣”典,天籁交织奏响序曲
2016/12/18 DOTA
Python操作列表之List.insert()方法的使用
2015/05/20 Python
python日志记录模块实例及改进
2017/02/12 Python
python通过elixir包操作mysql数据库实例代码
2018/01/31 Python
Python将list中的string批量转化成int/float的方法
2018/06/26 Python
Python中几种属性访问的区别与用法详解
2018/10/10 Python
浅谈Python的条件判断语句if/else语句
2019/03/21 Python
python tkinter库实现气泡屏保和锁屏
2019/07/29 Python
tensor和numpy的互相转换的实现示例
2019/08/02 Python
python通过实例讲解反射机制
2019/10/17 Python
四年大学生活的个人自我评价
2013/12/11 职场文书
酒店大堂副理的职责范文
2014/02/13 职场文书
优秀大学生职业生涯规划书
2014/02/27 职场文书
信息管理应届生求职信
2014/03/07 职场文书
平安家庭示范户事迹
2014/06/02 职场文书
幸福终点站观后感
2015/06/04 职场文书