jquery.ajax()上传带文件的表单

使用 jQuery 上传带文件的表单时,会有些问题。

首先,因为使用的是 FormData,所以必须在传入 $.ajax 的参数中配置 processData: false

否则将会抛出 Illegal invocation 的异常,因为 jQuery 默认是会对传入的 data 字段的数据进行处理的。

其次,注意请求的 Content-Type 首部,默认是 application/x-www-form-urlencoded; charset=UTF-8,也就是我们通常见的 “a=A&b=B” 这种格式。但使用 FormData 时,就不行了。

对参数添加 contentType 字段,将其值设置为 false 即可。如果 jQuery 版本小于 1.6,则手动设置为 multipart/form-data

var uuid = new UUID().toString();
var data = new FormData();
data.append("upfile", files[0]);
data.append("docid", uuid);
data.append("businessid", uuid);
data.append("funcid", "4005");
data.append("typeno", "400501");
$.ajax({
        data: data,
        type: "POST",
        url: "/doc",
        dataType: "json",
        cache: false,
        processData: false,
        contentType: false,
        success: function(e) {
           //function
        },
        error: function(e) {
           //function
        }
});



猜你喜欢

转载自blog.csdn.net/u012615439/article/details/78095966