通过formData数据发送ajax请求

本文详细介绍了如何使用原生JS及jQuery的FormData对象发送Ajax请求,包括创建FormData对象、添加数据、设置请求方式及处理响应的过程。适用于需要上传表单数据的场景。

formData

1.创建一个formData对象
var fd = new FormData(‘form表单’);
(创建formdtata对象的小括号里面,就是需要一个form表单dom对象)。
2.往fd对象中添加对象
fd.append(‘sex’,‘男’);
3.formData里面就会有form表单中 有name属性的这些标签的取值。//键值对形式
console.log(fd.get(‘name属性值’));

原生js通过formData数据发送ajax请求

//1.创建一个FormData对象
var fd = new FormData(document.querySelector('form'));
 //注意:创建formData对象的那个form表单,获取值的标签的name属性一定要和接口的参数一致,因为这个用于name属性的标签的值就是我们要传给接口的值.
 //2.发送ajax请求
var xhr = new XMLHttpRequest();
 xhr.open('post',url);
 //注意: 利用FormData对象作为数据参数发送ajax请求,是不需要设置请求头的
xhr.onload = function(){
console.log(xhr.response);
 }
xhr.send(fd); //fd对象在这里传递

jquery通过formData数据发送ajax请求

//1.创建一个formData对象
 var fd = new FormData($('form')[0]); //创建FormData对象的时候,小括号里面一定要给的是dom对象. 
 //2.发送ajax请求
 $.ajax({
type:'post',
url:url,
 //意思就是传递的参数就是fd对象. 
 data:fd,
//如果报了这样一个错: Illegal invocation
//写下面这两句话就可以解决. 
contentType:false,//不要设置请求头
processData:false,//不要把我们传递的参数转成 key=value这种格式
success:function(backData){
console.log(backData);
 }
 });

以上就是通过formData发送数据的介绍,详情可参考MDN
https://developer.mozilla.org/zh-CN/docs/Web/API/FormData/FormData
详情可参考MDN

在使用 AJAX 通过 `FormData` 发送请求,可以利用 `FormData` 对象动态收集表单数据,并通过 `$.ajax` 方法发送请求。此方法适用于上传文件、提交表单数据等场景。以下是对 `FormData` 的使用方法及其示例的详细说明。 ### 使用 `FormData` 的基本步骤 1. **创建 `FormData` 对象** 可以通过传入 `<form>` 元素来创建 `FormData` 对象,或者手动通过 `append()` 方法添加数据。 2. **配置 AJAX 请求** 在使用 `jQuery.ajax` 发送请求,需要将 `processData` 和 `contentType` 设置为 `false`,以确保 `FormData` 能够正确传输。 3. **发送请求** 通过 `$.ajax` 方法将 `FormData` 数据发送到指定的 URL,并根据需要处理响应结果。 ### 示例代码 #### 示例 1:通过表单元素直接获取数据发送请求 以下代码演示了如何通过表单元素获取数据并使用 `FormData` 发送 AJAX 请求: ```javascript $("form").submit(function(e) { e.preventDefault(); // 阻止默认提交行为 let form = e.target; let formData = new FormData(form); $.ajax({ url: form.action, data: formData, type: "POST", processData: false, // 避免 jQuery 对数据进行处理 contentType: false, // 避免设置 Content-Type 请求头 success: function(result) { console.log("请求成功,返回结果:", result); }, error: function(xhr, status, error) { console.error("请求失败:", error); } }); }); ``` #### 示例 2:通过按钮点击事件手动构建 `FormData` 并发送请求 以下代码展示了如何通过按钮点击事件手动构建 `FormData` 并发送 AJAX 请求: ```html <form id="uploadForm"> <p>指定文件名:<input type="text" name="name" value="" /></p> <p>上传文件:<input type="file" name="uploadFile" /></p> <input type="button" value="上传" onclick="doUpload()" /> </form> ``` ```javascript function doUpload() { let formData = new FormData(); let nameInput = document.querySelector("#uploadForm input[name=&#39;name&#39;]"); let fileInput = document.querySelector("#uploadForm input[type=&#39;file&#39;]"); // 添加文本字段 formData.append("name", nameInput.value); // 添加文件字段 if (fileInput.files.length > 0) { formData.append("uploadFile", fileInput.files[0]); } $.ajax({ url: "/upload", // 替换为实际的后端接口地址 data: formData, type: "POST", processData: false, contentType: false, success: function(result) { console.log("上传成功,返回结果:", result); }, error: function(xhr, status, error) { console.error("上传失败:", error); } }); } ``` ### 注意事项 - **`FormData` 的兼容性** `FormData` 在现代浏览器中得到了广泛支持,但在某些旧版本浏览器中可能需要使用 `XMLHttpRequest` 或其他替代方案。 - **文件上传处理** 当上传文件,确保后端接口能够正确解析 `multipart/form-data` 格式的数据。 - **动态添加数据** 除了从表单中获取数据外,还可以使用 `formData.append(key, value)` 方法动态添加数据###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

️不倒翁

你的鼓励就是我前进的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值