vue axios qs 正确提交数据姿势

先说明一下经历吧

需求:
有些时候使用application/x-www-form-urlencoded,也就是大家在项目经常用到的一种提交格式
有些时候使用application/json提交数据,也很常用
本人在开发过程中呢
一般使用application/x-www-form-urlencoded格式提交数据来查询
使用application/json格式来增加数据和修改数据
(不知道这两种格式的区别自行百度…emmmm…)

一开始呢,我天真的以为axios和jq 的ajax一样,通过修改header就能达到提交数据时候,自动根据我设置的header来进行数据的提交更改…
在不断的尝试中,我首先通过axios 初始化配置时候,我修改了它默认的header和加上了transformRequest ,结果是可以的

axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
axios.defaults.transformRequest = [function (data) {
  let ret = ''
  for (let it in data) {
    ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
  }
  return ret
}]
Vue.prototype.$axios = axios;

我再一次尝试把transformRequest去除掉,只留下headers,结果就不行了,由此判断出,axios是根据数据的不同决定header的不同。

这时候呢,我百度出来另外一个解决办法,就是使用qs框架
由于axios默认使用application/json格式来提交数据的,但是我想用application/x-www-form-urlencoded来提交数据,就得用到qs框架咯…emmmm…

Qs使用步骤:
1.安装qs,首先cmd开起来,cd到你的项目根目录,执行以下命令

npm install qs

在这里插入图片描述
然后呢,静静等待安装完毕即可…

2.在main.js中进行导入qs,交给vue进行使用

import qs from 'qs'
Vue.prototype.$qs = qs;

3.开始使用测试咯…
application/x-www-form-urlencoded格式提交:

this.$axios.post("logistics/addressLibary/updateSalesReturnAddress",this.$qs.stringify({
            addressTheLibaryId: row.id
          })).then((rsp) => {
            
          });

在这里插入图片描述
完成提交…

application/json提交(无需使用qs进行处理)

let data = this.form;
        data.addressVOList = [];
        data.addressVOList.push({code: this.form.country});
        data.addressVOList.push({code: this.form.city});
        data.addressVOList.push({code: this.form.province});
        data.addressVOList.push({code: this.form.county});

        this.$axios({
          method: 'post',
          url: "logistics/addressLibary/add",
          data:data,
        }).then((rsp) => {

        });

在这里插入图片描述
完成提交…

示例中的提交数据自行更改…

VueAxios可以用于提交带有文件的表单数据。以下是一个简单的示例: 首先,导入Vueaxios: ``` import Vue from 'vue'; import axios from 'axios'; ``` 然后,在Vue实例创建一个方法用来处理表单的提交: ``` methods: { submitForm() { // 创建一个 FormData 对象 let formData = new FormData(); // 获取文件输入框的文件 let file = this.$refs.fileInput.files[0]; // 将文件添加到 FormData 对象 formData.append('file', file); // 使用 axios 发送 POST 请求,将 FormData 对象作为数据传递 axios.post('/api/submit', formData) .then(response => { // 处理成功的响应 console.log(response); }) .catch(error => { // 处理错误的响应 console.error(error); }); } } ``` 在上面的代码,我们首先创建了一个FormData对象,然后通过获取文件输入框的文件并将其添加到FormData对象。接下来,使用axios的post方法发送POST请求,并将FormData对象作为数据传递。然后,根据返回的响应进行相关处理。 需要注意的是,上述代码的`this.$refs.fileInput`表示引用了一个具有`ref="fileInput"`属性的文件输入框,可以通过该引用来获取文件。 最后,在HTML模板添加一个表单,并调用submitForm方法来提交表单: ``` <form @submit="submitForm"> <input type="file" ref="fileInput" /> <button type="submit">提交</button> </form> ``` 在上述代码,我们监听了表单的submit事件,并在事件发生时调用submitForm方法。 以上就是使用VueAxios提交带有文件的表单数据的简单示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值