浅谈vue中get请求解决传输数据是数组格式的问题


Posted in Javascript onAugust 03, 2020

qs的stringify接收2个参数,第一个参数是需要序列化的对象,第二个参数是转化格式,一般默认格式是给出明确的索引,如:arr[0]=1&arr[1]=2

//indices是index的复数格式,因此indices是索引的意思
//bracket是括号的意思,因此arrayFormat:'brackets'代表数组下标为空[]

qs.stringify({ arr: [1,2,3] }, { indices: false }) //arr=1&arr=2&arr=3
qs.stringify({ arr: [1,2,3] }, { arrayFormat: 'indices' }) //arr[0]=1&arr[1]=2&arr[2]=3
qs.stringify({ arr: [1,2,3] }, { arrayFormat: 'brackets' }) //arr[]=1&arr[]=2&arr[]=3
qs.stringify({ arr: [1,2,3] }, { arrayFormat: 'repeat' }) //arr=1&arr=2&arr=3

qs的parse()使用

如果接口需要获取get请求接口的请求数据,可以使用parse(),将拼接在地址的参数数据转换为对象

let url = "111.111.3.203:8080/getList?id=1&name=huahua&arr=a&arr=b"
let splitObj = url.split('?')[1]
qs.parse(splitObj )  //{ id: '1', name: 'huahua', arr: ['a','b'] }

qs.stringify和JSON.stringify的区别

let obj = { a: 1, b: 2 }
qs.stringify(obj)  //a=1&b=2
JSON.stringify(obj) // "{'a': 1, 'b': 2}"

qs解决数组参数问题

安装axios,qs

npm install qs

npm install axios -S

在main.js中引入qs

import Vue from 'vue'
import qs from 'qs'
import axios from 'axios'
Vue.prototype.$qs = qs;  //qs全局挂载在vue实例上
Vue.prototype.$http = axios; //axios全局挂载在vue实例上

在组件中使用

get请求的请求参数是将数据放在config的params中,实际是通过“&”拼接在url上

如果请求参数是数组arr=[1,2,3],get请求不对数组做任何处理,则传递给后端的接口是

"url地址?arr[]=1&arr[]=2&arr[]=3",接口会报错,因为识别不了“[]”这个符号

需要对数组进行修改,需要通过qs的stringify()方法将数组序列化,则传递给后端的接口是 “url地址?arr=1&arr=2&arr=3”,接口不会报错

this.arr = [1,2,3]
//写法一,直接使用qs的stringify()
this.$http.get('url地址', {
 params: {
 arr: this.$qs.stringify(this.arr)  //数组拼接在url地址 url地址?arr=1&arr=2&arr=3
 }
}).then(() => {
}) 

//写法二 ,使用axios提供的paramsSerializer序列化函数
this.$http.get('url地址', {
 params: {
 arr: this.arr  //数组拼接在url地址 url地址?arr=1&arr=2&arr=3
 },
 paramsSerializer: (params) => {
 return this.$qs.stringify(params) 
 }
}).then(() => {
})

以上这篇浅谈vue中get请求解决传输数据是数组格式的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
var与Javascript变量隐式声明
Sep 17 Javascript
js页面跳转常用的几种方式
Nov 25 Javascript
javascript鼠标滑动评分控件完整实例
May 13 Javascript
javascript实现判断鼠标的状态
Jul 10 Javascript
Angular页面间切换及传值的4种方法
Nov 04 Javascript
jQuery实现jQuery-form.js实现异步上传文件
Apr 28 jQuery
写给vue新手们的vue渲染页面教程
Sep 01 Javascript
原生JS获取元素的位置与尺寸实现方法
Oct 18 Javascript
Vue2.0 实现移动端图片上传功能
May 30 Javascript
微信网页授权并获取用户信息的方法
Jul 30 Javascript
vue component 中引入less文件报错 Module build failed
Apr 17 Javascript
vue使用自定义事件的表单输入组件用法详解【日期组件与货币组件】
Jun 01 Javascript
VUE使用axios调用后台API接口的方法
Aug 03 #Javascript
vue cli3.0打包上线静态资源找不到路径的解决操作
Aug 03 #Javascript
js数组中去除重复值的几种方法
Aug 03 #Javascript
Vue打包部署到Nginx时,css样式不生效的解决方式
Aug 03 #Javascript
javascript运行机制之执行顺序理解
Aug 03 #Javascript
解决vue+elementui项目打包后样式变化问题
Aug 03 #Javascript
vue实现PC端分辨率适配操作
Aug 03 #Javascript
You might like
其他功能
2006/10/09 PHP
PHP中操作ini配置文件的方法
2013/04/25 PHP
php 目录遍历、删除 函数的使用介绍
2013/04/28 PHP
一个收集图片的bookmarlet(js 刷新页面中的图片)
2010/05/27 Javascript
高亮显示web页表格行的javascript代码
2010/11/19 Javascript
输入密码检测大写是否锁定js实现代码
2012/12/03 Javascript
JavaScript判断访问的来源是手机还是电脑,用的哪种浏览器
2013/12/12 Javascript
javascript实现相同事件名称,不同命名空间的调用方法
2015/06/26 Javascript
javascript处理a标签超链接默认事件的方法
2015/06/29 Javascript
浅谈JS的基础类型与引用类型
2016/09/13 Javascript
vue组件初学_弹射小球(实例讲解)
2017/09/06 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
2018/03/25 jQuery
Vue 中axios配置实例详解
2018/07/27 Javascript
jQuery实现表格隔行换色
2018/09/01 jQuery
微信小程序全局变量GLOBALDATA的定义和调用过程解析
2019/09/23 Javascript
vue自定义指令实现仅支持输入数字和浮点型的示例
2019/10/30 Javascript
Vue开发中遇到的跨域问题及解决方法
2020/02/11 Javascript
python赋值操作方法分享
2013/03/23 Python
Python实现简单的多任务mysql转xml的方法
2017/02/08 Python
解决python3读取Python2存储的pickle文件问题
2018/10/25 Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
2020/03/23 Python
基于python实现地址和经纬度转换
2020/05/19 Python
python中添加模块导入路径的方法
2021/02/03 Python
阿里云:Aliyun.com
2017/02/15 全球购物
英国可持续奢侈品包包品牌:Elvis & Kresse
2018/08/05 全球购物
自荐信格式的六要素
2013/09/21 职场文书
实习教师个人的自我评价
2013/11/08 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
医生见习报告范文
2014/11/03 职场文书
幼师大班个人总结
2015/02/13 职场文书
2015年幼儿园学期工作总结
2015/05/22 职场文书
2016年党员干部公开承诺书
2016/03/24 职场文书
同学联谊会邀请函
2019/06/24 职场文书
导游词之西递宏村
2019/12/10 职场文书
python opencv旋转图片的使用方法
2021/06/04 Python
sqlserver连接错误之SQL评估期已过的问题解决
2022/03/23 SQL Server