vue axios post发送复杂对象问题


Posted in Javascript onJune 04, 2019

一、项目情形

现在vue项目中,一般使用axios发送请求去后台拉取数据。

在某些业务场景中,前端需要在某个字段中发送一个复杂的嵌套对象给后台做保存并处理。虽然axios可配置发送方式(post/get等),但如果不做其他配置,post的数据其实也是拼在请求地址后面,而这种传输方式会有很多问题:一是可能数据丢失,二是get传送的数据长度有limit,如果需要保存大段的中文,会报错;三是数据不直观,复杂对象的格式会出现问题。

二、解决方案

怎么实现使用post方法时,能实现formData方式提交,而且整个请求数据格式能像queryString一样直观。

使用QS将数据序列化

//main.js
import axios from 'axios';
Vue.prototype.$axios = axios; // 配置axios的访问方式
//demo.vue
import Qs from qs;
this.$axios({
 method: "post",
 url: "url",
 data: reqData,
 transformRequest: [ function(data){
  return Qs.stringify(data) //使用Qs将请求参数序列化
 }],
 headers: {
  'Content-Type': 'application/x-www-form-urlencoded' //必须设置传输方式
 }
}).then((res)=>{
 //逻辑代码
}

完成第一步后,可以实现post请求了,请求体为formData的格式,但如果reqData是一个对象嵌套数组的复杂对象,form的格式会变得非常不直观。如果此时后台需要将对象整个储存起来,以便下次拉取数据渲染前端页面,则会增加很多额外的转化工作。

//例如obj为一个嵌套多层的复杂对象
let reqData = {
 id: '123',
 status: '1',
 data: {
  innerData: {
   price: "higher",
   amount: "2000",
  },
  outerData: {
   price: "lower",
   amount: "3000"!
  },
  parts: ['123','234','345','456']
 }
}
//参考如上配置,最后请求体中parsed的数据格式会变成如下
![图片描述][1]

对象跟数组的每一项都被拆拼成键值对,数据格式非常不直观,如果后台需要将整个数据保存以便下次取用,会不方便。

可以怎样简单处理一下,让它变得像如下图一的get方法一样参数清晰呢?

vue axios post发送复杂对象问题

只需做一个简单的处理,将复杂对象对象变成字符串,再进行传输。

let data = {
  innerData: {
   price: "higher",
   amount: "2000",
  },
  outerData: {
   price: "lower",
   amount: "3000"!
  },
  parts: ['123','234','345','456']
 },
 reqData = {
  id: '123',
  status: '1',
  data: **JSON.stringify(data)**
 };
this.$axios({
 method: "post",
 url: "url",
 data: reqData,
 transformRequest: [ function(data){
  return Qs.stringify(data) //使用Qs将请求参数序列化
 }],
 headers: {
  'Content-Type': 'application/x-www-form-urlencoded' //必须设置传输方式
 }
}).then((res)=>{
 //逻辑代码
}

这样之后,数据格式变得清晰可读,而且后台可以根据key值直接取出整个对象。我们也可以大方优雅地用vue axios进行post传输啦。

vue axios post发送复杂对象问题

总结

以上所述是小编给大家介绍的vue axios post发送复杂对象问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
Windows Live的@live.com域名注册漏洞 利用代码
Dec 27 Javascript
javascript attachEvent绑定多个事件执行顺序问题
Oct 20 Javascript
js jquery ajax的几种用法总结(及优缺点介绍)
Jan 28 Javascript
js获取url中的参数且参数为中文时通过js解码
Mar 19 Javascript
node.js中的url.parse方法使用说明
Dec 10 Javascript
JS实现的透明度渐变动画效果示例
Apr 28 Javascript
Vue.js单向绑定和双向绑定实例分析
Aug 14 Javascript
vue使用rem实现 移动端屏幕适配
Sep 26 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
Nov 18 Javascript
ES6基础之展开语法(Spread syntax)
Feb 21 Javascript
Angular中innerHTML标签的样式不起作用的原因解析
Jun 18 Javascript
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
Nov 20 Javascript
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
Jun 04 #Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
Jun 04 #Javascript
JavaScript实现页面中录音功能的方法
Jun 04 #Javascript
vue elementUI 表单校验功能之数组多层嵌套
Jun 04 #Javascript
小程序根据手机机型设置自定义底部导航距离
Jun 04 #Javascript
js回文数的4种判断方法示例
Jun 04 #Javascript
Vue对象赋值视图不更新问题及解决方法
Jun 03 #Javascript
You might like
第五节--克隆
2006/11/16 PHP
兼容性比较好的PHP生成缩略图的代码
2011/01/12 PHP
PHP开发不能违背的安全规则 过滤用户输入
2011/05/01 PHP
php使HTML标签自动补全闭合函数代码
2012/10/04 PHP
PDO::lastInsertId讲解
2019/01/29 PHP
jQuery 1.0.2
2006/10/11 Javascript
javascript 树控件 比较好用
2009/06/11 Javascript
技术男用来对妹子表白的百度首页
2014/07/23 Javascript
JavaScript变量的作用域全解析
2015/08/14 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
Bootstrap富文本组件wysiwyg数据保存到mysql的方法
2016/05/09 Javascript
vue.js入门(3)——详解组件通信
2016/12/02 Javascript
touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
2017/02/04 Javascript
AngularJS自定义指令之复制指令实现方法
2017/05/18 Javascript
详解在express站点中使用ejs模板引擎
2017/09/21 Javascript
微信小程序scroll-view仿拼多多横向滑动滚动条
2020/04/21 Javascript
[01:31:03]DOTA2完美盛典全回顾 见证十五项大奖花落谁家
2017/11/28 DOTA
[39:00]Optic vs VP 2018国际邀请赛淘汰赛BO3 第三场 8.24
2018/08/25 DOTA
python使用新浪微博api上传图片到微博示例
2014/01/10 Python
python版简单工厂模式
2017/10/16 Python
Tesserocr库的正确安装方式
2018/10/19 Python
python3.6、opencv安装环境搭建过程(图文教程)
2019/11/05 Python
python中count函数简单用法
2020/01/05 Python
python subprocess pipe 实时输出日志的操作
2020/12/05 Python
CSS3打造百度贴吧的3D翻牌效果示例
2017/01/04 HTML / CSS
德国网上花店:Valentins
2018/08/15 全球购物
新闻编辑自荐信
2013/11/03 职场文书
少儿节目主持串词
2014/04/02 职场文书
大学生励志演讲稿
2014/04/25 职场文书
安全负责人任命书
2014/06/06 职场文书
预备党员期盼十八届四中全会召开思想汇报
2014/10/17 职场文书
优秀教师个人材料
2014/12/15 职场文书
答辩状格式范本
2015/05/22 职场文书
千与千寻观后感
2015/06/04 职场文书
2016年感恩母亲节活动总结
2016/04/01 职场文书
python scipy 稀疏矩阵的使用说明
2021/05/26 Python