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 相关文章推荐
用js判断页面是否加载完成实现代码
Dec 11 Javascript
你必须知道的Javascript知识点之"this指针"的应用
Apr 23 Javascript
浅谈javascript的调试
Jan 28 Javascript
javascript中clipboardData对象用法详解
May 13 Javascript
javascript中传统事件与现代事件
Jun 23 Javascript
JavaScript中ES6 Babel正确安装过程
Jul 18 Javascript
JS异步文件分片断点上传的实现思路
Dec 25 Javascript
关于Promise 异步编程的实例讲解
Sep 01 Javascript
jQuery中可见性过滤器简单用法示例
Mar 31 jQuery
js实现数据导出为EXCEL(支持大量数据导出)
Mar 31 Javascript
vue中是怎样监听数组变化的
Oct 24 Javascript
Vue如何跨组件传递Slot的实现
Dec 14 Vue.js
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
php基础知识:函数基础知识
2006/12/13 PHP
ThinkPHP写第一个模块应用
2012/02/20 PHP
php压缩和解压缩字符串的方法
2015/03/14 PHP
PHP 微信支付类 demo
2015/11/30 PHP
php中如何执行linux命令详解
2018/11/06 PHP
围观tangram js库
2010/12/28 Javascript
Jquery index()方法 获取相应元素索引值
2012/10/12 Javascript
js计算精度问题小结
2013/04/22 Javascript
单击浏览器右上角的X关闭窗口弹出提示的小例子
2013/06/12 Javascript
使用javascript提交form表单方法汇总
2015/06/25 Javascript
JavaScript数组对象赋值用法实例
2015/08/04 Javascript
18个非常棒的jQuery代码片段
2015/11/02 Javascript
JS实现点击登录弹出窗口同时背景色渐变动画效果
2016/03/25 Javascript
Jquery判断form表单数据是否变化
2016/03/30 Javascript
JS简单判断函数是否存在的方法
2017/02/13 Javascript
响应式框架Bootstrap栅格系统的实例
2017/12/19 Javascript
谈谈React中的Render Props模式
2018/12/06 Javascript
vue分页器组件编写方法详解
2019/06/28 Javascript
理解JavaScript中的Proxy 与 Reflection API
2020/09/21 Javascript
python判断字符串是否包含子字符串的方法
2015/03/24 Python
在Python的Flask框架中构建Web表单的教程
2016/06/04 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
2018/04/05 Python
Django中的ajax请求
2018/10/19 Python
解决Django连接db遇到的问题
2019/08/29 Python
python 写一个性能测试工具(一)
2020/10/24 Python
用canvas实现图片滤镜效果附演示
2013/11/05 HTML / CSS
英国电动工具购买网站:Anglia Tool Centre
2017/04/25 全球购物
美国体育用品在线:Modell’s Sporting Goods
2018/06/07 全球购物
美国婚礼礼品网站:MyWeddingFavors
2018/09/26 全球购物
sort命令的作用和用法
2013/08/25 面试题
技校毕业生自荐信范文
2014/03/07 职场文书
学校校庆演讲稿
2014/05/22 职场文书
课外活动实习计划
2015/01/19 职场文书
2015年审计人员工作总结
2015/05/26 职场文书
2015年度学校应急管理工作总结
2015/10/22 职场文书
Python 数据结构之十大经典排序算法一文通关
2021/10/16 Python