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中的new的使用方法与注意事项
May 16 Javascript
javascript入门·对象属性方法大总结
Oct 01 Javascript
JavaScript Array扩展实现代码
Oct 14 Javascript
IE7中javascript操作CheckBox的checked=true不打勾的解决方法
Dec 07 Javascript
jQuery 联动日历实现代码
May 31 Javascript
JS和jquery获取各种屏幕的宽度和高度的代码
Aug 02 Javascript
Javascript中Array.prototype.map()详解
Oct 22 Javascript
JavaScript必知必会(五) eval 的使用
Jun 08 Javascript
jQuery实现的tab标签切换效果示例
Sep 05 Javascript
vue实现条件判断动态绑定样式的方法
Sep 29 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
Oct 11 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
Dec 06 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
PHP 图像尺寸调整代码
2010/05/26 PHP
php站内搜索并高亮显示关键字的实现代码
2011/12/29 PHP
PHP获取文件的MD5值并判断是否被修改的例子
2014/06/19 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
phpstudy2020搭建站点的实现示例
2020/10/30 PHP
javascript 解决表单仍然提交即使监听处理函数返回false
2010/03/14 Javascript
google 搜索框添加关键字实现代码
2010/04/24 Javascript
extjs之去除s.gif的影响
2010/12/25 Javascript
jquery的ajax请求全面了解
2013/03/20 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
jQuery编程中的一些核心方法简介
2015/08/14 Javascript
JavaScript实现图片自动加载的瀑布流效果
2016/04/11 Javascript
JavaScript实现设计模式中的单例模式的一些技巧总结
2016/05/17 Javascript
JavaScript闭包实例详解
2016/06/03 Javascript
全面解析Bootstrap中tab(选项卡)的使用方法
2016/06/06 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
深入理解requestAnimationFrame的动画循环
2016/09/20 Javascript
vue中v-show和v-if的异同及v-show用法
2019/06/06 Javascript
js实现可爱的气泡特效
2020/09/05 Javascript
关于Node.js中频繁修改代码重启服务器的问题
2020/10/15 Javascript
angular *Ngif else用法详解
2020/12/15 Javascript
Python求两个文本文件以行为单位的交集、并集与差集的方法
2015/06/17 Python
Python构造自定义方法来美化字典结构输出的示例
2016/06/16 Python
python编码总结(编码类型、格式、转码)
2016/07/01 Python
Django基础知识与基本应用入门教程
2018/07/20 Python
windows下python 3.6.4安装配置图文教程
2018/08/21 Python
pycharm修改文件的默认打开方式的步骤
2019/07/29 Python
纽约家具、家居装饰和地毯店:ABC Carpet & Home
2017/06/21 全球购物
亚洲航空公司官方网站:AirAsia
2019/11/25 全球购物
Marlies Dekkers内衣荷兰官方网店:荷兰奢侈内衣品牌
2020/03/27 全球购物
自动化专业个人求职信范文
2013/12/30 职场文书
《蜗牛》教学反思
2014/02/18 职场文书
群众路线党员自我评议范文2014
2014/09/24 职场文书
自我查摆剖析材料
2014/10/11 职场文书
2016暑期师德培训心得体会
2016/01/09 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书