表单提交,使用form的serialize来给数据进行序列化斌提交,发现上传文件获取不到,原因是这种方式处理表单时所适用的input标签类型是有限的,只适用于一些常用的类型例如text、checkbox、select、date等等,但是对于file文件类型的input框并不适用。
解决办法:通过获取form对象来解决 new FormData($('.Oform')[0])
代码:
(html)
<form class="Oform" method="post" enctype="multipart/form-data"><!--由<form>
表单构造的FormData
对象,声明属性enctype="multipart/form-data"
-->
<input type="type" name="e_id">
<input class="Ofile" accept=".xls,.xlsx" name="fileXls" type="file" />
</form>
$('.Ofile').on('change',function(){ $.ajax({ url :"url", type : "POST", data : new FormData($('.Oform')[0]), cache: false,//cache
设置为false
,上传文件不需要缓存 processData: false,//因为data
值是FormData
对象,不需要对数据做处理 contentType: false,//<form>
表单构造的FormData
对象,且已经声明了属性enctype="multipart/form-data"
,所以这里设置为false success : function(data) { console.log(data) var arr=JSON.parse(data) if(arr.status=='1'){ //提示插件 swal({ title: "导入成功!", type: "success", timer: 1000, showConfirmButton: false, }) location=location }else{ swal({ title: "导入失败!", text:arr.msg, type: "error", // timer: 1000, showConfirmButton: true, },function (i) { if(i){ location=location } }) } }, error : function(data) { } }); })