vue 在使用post提交json数据、表单数据,object数据,解决方案

54 篇文章 3 订阅

方案1:使用qs

示例

formObject数据是这样的

 var formObject={
 id:0,
 name:'cplvfx',
 like:[{id:1,name:'苹果'},{id:2,name:'香蕉'}],
 more:{
 age:20,
 sex:'男'
 }
 }

使用 qs转换格式 

that.$axios.post("/", that.$qs.stringify(that.formObject)).then((res) => {
//你的代码
});

 提交时的数据格式是

id: 0
name: cplvfx
like[0][id]: 1
like[0][name]: 苹果
like[1][id]: 2
like[1][name]: 香蕉
more[age]: 20
more[sex]: 男

1、安装

npm install qs

2、在组件中应用

import qs from 'qs'

3、主要使用qs.parse(),qs.string

qs.parse()是将URL解析成对象的形式
qs.stringify()是将对象 序列化成URL的形式,以&进行拼接

如果遇到post提交表单,axios会将数据格式转换成 FormData对象

这样就不需要对 js的object 对象数据转formdata格式化

4、具体例子如下

let data = qs.stringify({
    "username":this.username,
    "password":this.password
});
username=renping&password=123456

如果遇到post提交表单,axios会将数据格式转换成 FormData对象

这样就不需要对 js的object 对象数据转formdata格式化

 方案2:使用js原生 FormData对象进行提交

Form Data参考数据,里面包含数组等特殊字段数据

 var formObject={
 id:0,
 name:'cplvfx',
 like:[{id:1,name:'苹果'},{id:2,name:'香蕉'}],
 more:{
 age:20,
 sex:'男'
 }
 }

要保证提交时的数据是这样的。(因为表单提交时的数据格式要求)

id: 0
name: cplvfx
like[0][id]: 1
like[0][name]: 苹果
like[1][id]: 2
like[1][name]: 香蕉
more[age]: 20
more[sex]: 男

我们需要这样写

var that=this;

var formData = new FormData();
formData.append("id",0);
formData.append("name","cplvfx");
formData.append("like[0][id]",1);
formData.append("like[0][name]","苹果");
formData.append("like[1][id]",2);
formData.append("like[1][name]","香蕉");
formData.append("more[age]",20);
formData.append("more[sex]","男");

//发起提交请求
that.$axios.post("/",formData).then((res) => {
//你的代码
});

这种提交方式 jq 和vue同样适用

显然在没有 qs插件方便

 方案3:把object转换成FormData对象再进行提交

可以根据“方案2”写一个循环把object对象转换成FormData对象


延伸阅读 

new FormData()对象的作用以及使用方法_uu盘的博客-CSDN博客_newformdata

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
好的,我可以为您解答这个问题。 首先,使用Vue实现表单提交JSON数据的步骤如下: 1. 在Vue组件中,使用v-model指令绑定表单输入框的值,例如: ```html <template> <div> <input type="text" v-model="form.name" /> <input type="text" v-model="form.email" /> <button @click="submitForm">提交</button> </div> </template> <script> export default { data() { return { form: { name: '', email: '', }, }; }, methods: { submitForm() { // 将表单数据转为JSON格式 const formData = JSON.stringify(this.form); // 将JSON数据提交到后端 // ... }, }, }; </script> ``` 2. 在submitForm方法中,将表单数据转为JSON格式,然后将JSON数据提交到后端。 接下来,使用Vuex实现表单提交JSON数据的步骤如下: 1. 在Vuex store中定义一个表单数据状态,例如: ```js // store.js export default new Vuex.Store({ state: { formData: { name: '', email: '', }, }, mutations: { updateFormData(state, formData) { state.formData = formData; }, }, actions: { submitForm({ state }) { // 将表单数据转为JSON格式 const formData = JSON.stringify(state.formData); // 将JSON数据提交到后端 // ... }, }, }); ``` 2. 在表单组件中,使用mapState和mapMutations将表单数据状态映射到组件中,并使用mapActions将submitForm方法映射到组件中,例如: ```html <template> <div> <input type="text" v-model="formData.name" /> <input type="text" v-model="formData.email" /> <button @click="submitForm">提交</button> </div> </template> <script> import { mapState, mapMutations, mapActions } from 'vuex'; export default { computed: { ...mapState({ formData: state => state.formData, }), }, methods: { ...mapMutations({ updateFormData: 'updateFormData', }), ...mapActions({ submitForm: 'submitForm', }), }, }; </script> ``` 3. 在表单输入框中,使用v-model指令绑定formData中对应字段的值,并在输入框值改变时,调用updateFormData方法更新formData状态,例如: ```html <input type="text" v-model="formData.name" @input="updateFormData({ name: $event.target.value })" /> <input type="text" v-model="formData.email" @input="updateFormData({ email: $event.target.value })" /> ``` 这样,当用户点击提交按钮时,会触发submitForm方法将表单数据转为JSON格式并提交到后端。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙-极纪元JJY.Cheng

客官,1分钱也是爱,给个赏钱吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值