表单提交,使用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) {
}
});
})