Ajax提交数据
背景
FormData简介The FormData object lets you compile a set of key/value pairs to send using XMLHttpRequest. It is primarily intended for use in sending form data,but can be used independently from forms in order to transmit keyed data. The transmitted data is in the same format that the form's submit() method would use to send the data if the form's encoding type were set to multipart/form-data. 大致意思是你可以将数据使用FormData对象编译成键值对形式,然后使用XMLHttpRequest技术向后端发送数据。主要是用来发送form表单数据,也可以发送带键数据。这种形式传输的数据和一个 Ajax使用FormData提交数据只是简单的示范一下文件上传,表单数据类似,不写例子了。 Ajax上传文件-带form标签的FormData提交<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>测试</title> </head> <body> <form id="upload" method="post"> <input id="file" type="file" name="file"/> <input id="img" type="hidden"/> <input type="submit" value="上传图片"> </form> <script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script> <script type="text/javascript"> var BASE_URL = '../' $(document).ready(function(){ $('#file').on('change',function() { var formData = new FormData($('#upload')[0]) $.ajax({ url: BASE_URL + 'api/upload',type: 'post',cache: false,data: formData,processData: false,contentType: false,success: function(res) { console.log(res) } }) }) }) </script> </body> </html> <?php print_r($_FILE);exit(); ?> 特点:form表单提交,带有<form>标签,enctype="multipart/form-data"不设置也可以。 Ajax不带form标签的FormData提交<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>测试</title> </head> <body> <input id="file" type="file" name="file"/> <input id="img" type="hidden"/> <input type="submit" value="上传图片"> <script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script> <script type="text/javascript"> var BASE_URL = '../' $(document).ready(function(){ $('#file').on('change',function() { console.log(this.files) var formData = new FormData() formData.append("file",this.files[0]); $.ajax({ url: BASE_URL + 'api/upload',success: function(res) { console.log(res) } }) }) }) </script> </body> </html> <?php print_r($_FILE);exit(); ?> 没有<form>标签,基本使用场景中使用的是这种。 Ajax不使用FormData提交数据从参考2来看,上传文件需要使用使用FileReader对象,并且Ajax不使用FormData提交数据略复杂,幸亏有一些大咖封装了一下,比如官方提供了一个 感受FormData是HTML5新增的属性,可能在兼容浏览器上面会抛弃一些古典(old)浏览器,不过简单;利用纯Ajax提交也还好,因为有很多现成的库,比如jquery,axios...从 参考
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |