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 相关文章推荐
用javascript操作xml
Nov 04 Javascript
获取网站跟路径的javascript代码(站点及虚拟目录)
Oct 20 Javascript
jQuery contains过滤器实现精确匹配使用方法
Apr 12 Javascript
完美兼容各大浏览器的jQuery仿新浪图文淡入淡出间歇滚动特效
Nov 12 Javascript
JavaScript常用脚本汇总(一)
Mar 04 Javascript
javascript实现简单的进度条
Jul 02 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
Jan 29 Javascript
Angular.js自动化测试之protractor详解
Jul 07 Javascript
基于Datatables跳转到指定页的简单实例
Nov 09 Javascript
实例详解vue中的$root和$parent
Apr 29 Javascript
vue+element实现表格新增、编辑、删除功能
May 28 Javascript
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
May 13 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
建立动态的WML站点(三)
2006/10/09 PHP
PHP的魔术常量__METHOD__简介
2014/07/08 PHP
php中简单的对称加密算法实现
2017/01/05 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
PHP数据对象映射模式实例分析
2019/03/29 PHP
jquery tools 系列 scrollable(2)
2009/09/06 Javascript
给jqGrid数据行添加修改和删除操作链接(之一)
2011/11/04 Javascript
jQuery方法简洁实现隔行换色及toggleClass的使用
2013/03/15 Javascript
js离开或刷新页面检测(且兼容FF,IE,Chrome)
2014/03/05 Javascript
javascript实现获取cookie过期时间的变通方法
2014/08/14 Javascript
AngularJS入门教程之静态模板详解
2016/08/18 Javascript
Bootstrap模态框案例解析
2017/03/05 Javascript
angular2+node.js express打包部署的实战
2017/07/27 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
2018/04/26 Javascript
Vue实现微信支付功能遇到的坑
2019/06/05 Javascript
探索JavaScript中私有成员的相关知识
2019/06/13 Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
2020/08/21 Javascript
Python实现遍历windows所有窗口并输出窗口标题的方法
2015/03/13 Python
Python中使用strip()方法删除字符串中空格的教程
2015/05/20 Python
Python paramiko模块的使用示例
2018/04/11 Python
python项目对接钉钉SDK的实现
2019/07/15 Python
Python字符串格式化输出代码实例
2019/11/22 Python
浅谈Python中的异常和JSON读写数据的实现
2020/02/27 Python
Django ORM 查询表中某列字段值的方法
2020/04/30 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
2020/05/03 Python
Bobbi Brown芭比波朗美国官网:化妆师专业彩妆保养品品牌
2016/08/18 全球购物
英国豪华装饰照明品牌的在线零售商:Inspyer Lighting
2019/12/10 全球购物
大学学年自我鉴定
2013/10/28 职场文书
职业教育毕业生求职信
2013/11/09 职场文书
表扬信格式
2014/01/12 职场文书
写给孩子的新学期寄语
2015/02/27 职场文书
2015学校师德师风工作总结
2015/04/22 职场文书
公务员的复习计划书,请收下!
2019/07/15 职场文书
Pytorch 使用tensor特定条件判断索引
2021/04/08 Python
Python selenium的这三种等待方式一定要会!
2021/06/10 Python
Python os和os.path模块详情
2022/04/02 Python