vue3发送FormData格式的请求

1、在vue3的组合式API中使用

<script setup>
import { ref } from 'vue';
import axios from 'axios';

const sendRequest = async () => {
  try {
  	// step1:创建FormData格式的ref对象
	const formData = ref(new FormData());
	
  	// step2:填充 FormData(key1,key2均为请求用的参数)
	formData.value.append('key1', 'value1');
	formData.value.append('key2', 'value2');
	// 如果是文件,可以这样添加
	formData.value.append('file', fileInput.files[0]);
	
	// step3:发送请求(将formData整个放进去)
  	// 使用了axios实例,需要先在单独的js文件中封装创建实例,创建实例可见下面的方式二的step1
    const response = await axios.post('/api/request', formData.value); 
    console.log(response);
  } catch (error) {
    console.error(error);
  }
};
sendRequest();
</script >

2、不使用vue3组合式API

import axios from 'axios';

const sendRequest = async () => {
	// 创建 FormData 对象
	const formData = new FormData();
	formData.append('key1', 'value1');
	formData.append('key2', 'value2');
	// 如果是文件,可以这样添加
	formData.append('file', fileInput.files[0]);

	// 发送请求有如下两个方式
	// 方式一:直接使用axios
	axios({
	  method: 'post', // 或者 'put'、'patch' 等
	  url: '/api/request', // 请求api
	  data: formData,
	  headers: {
	    'Content-Type': 'multipart/form-data' // 通常不需要手动设置,Axios会自动处理
	  }
	})
	.then(response => {
	  // 处理响应数据
	  console.log(response);
	})
	.catch(error => {
	  // 处理错误
	  console.error(error);
	});
	
	// 方式二:使用axios实例方法
	// step1:先创建axios实例
	const instance = axios.create({
	  baseURL: 'https://some-domain.com/api/',
	  timeout: 1000,  // 可选项
	  headers: {'Content-Type': 'multipart/form-data'}  // 通常不需要手动设置,Axios会自动处理
	});
	// step2:发送请求
	instance.post('/api/request', formData)
	  .then(response => {
	    // 处理响应数据
	    console.log(response);
	  })
	  .catch(error => {
	    // 处理错误
	    console.error(error);
	  });
};
sendRequest();
Vue 中,`FormData` 是一个 JavaScript 对象,它提供了一种方便的方式来构建和处理表单数据。 `FormData` 对象允许你通过 JavaScript 收集表单数据,并将其组织成键值对的形式。这使得在发送 AJAX 请求时,可以轻松地将表单数据作为请求的主体进行发送。 在 Vue 中,你可以使用 `FormData` 对象来处理包含文件上传的表单数据,或者发送复杂的表单数据。以下是一个在 Vue 中使用 `FormData` 的示例: ```vue <template> <div> <form @submit.prevent="submitForm"> <input type="text" v-model="name"> <input type="file" ref="fileInput"> <button type="submit">Submit</button> </form> </div> </template> <script> export default { data() { return { name: '', }; }, methods: { submitForm() { const formData = new FormData(); formData.append('name', this.name); formData.append('file', this.$refs.fileInput.files[0]); // 发送 AJAX 请求 axios.post('/api/submit', formData) .then(response => { // 处理响应 }) .catch(error => { // 处理错误 }); } } } </script> ``` 在上述示例中,我们通过 `FormData` 对象创建一个空的表单数据对象 `formData`。然后,使用 `append()` 方法将表单字段的键值对添加到 `formData` 中,包括一个文本字段 `name` 和一个文件字段 `file`。我们通过 `$refs` 引用获取到文件输入框的 DOM 对象,然后使用其 `files` 属性来获取用户选择的文件。 最后,我们使用 axios 或其他 AJAX 库来发送包含表单数据的 POST 请求。在这个例子中,我们将 `formData` 作为请求的主体进行发送。 总结起来,`FormData` 是在 Vue 中用于构建和处理表单数据的对象,特别适用于处理包含文件上传或复杂数据的表单。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值