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