ajax上传文件报错的原因(遇到了坑所以才写的博客)前台报这个错误jquery.min.js:4 Uncaught TypeError: Illegal invocation

报这个错的原因是上传文件时导致的错误,错误的原因:

1、使用这个var formData = new FormData($("#insertForm")[0]);

FormData 对象的使用:
1.用一些键值对来模拟一系列表单控件:即把form中所有表单元素的name与value组装成
一个queryString
2. 异步上传二进制文件

不能使用jQuery的参数序列化方法serialize(),他不能上传文件。

2、一定要加 contentType: false,processData: false 这两个配置

这个配置的作用:

1、contentType: false, //必须false才会自动加上正确的Content-Type,否则服务器无法识别
2、 processData必须false才会避开jQuery对 formdata 的默认处理
                   XMLHttpRequest会对 formdata 进行正确的处理

完成以上两点,文件就会上传成功

下面是上传问件的正确代码

 //添加(包含文件上传)
        function doinsertClient() {
            var formData = new FormData($("#insertForm")[0]);
            console.log(formData);
            $.ajax({
                type: "POST", // 请求类型
                url: "insertClient", // 和form表单的 action属性一样
                data: formData,
               
                contentType: false, //必须false才会自动加上正确的Content-Type,否则服务器无法识别
               
                /*
                    processData必须false才会避开jQuery对 formdata 的默认处理
                   XMLHttpRequest会对 formdata 进行正确的处理
                */
               
                processData: false,//注意以上两个配置
               
                dataType: "json",
                success: function (data) {
                    $('#myAddModal').modal('hide');
                    swal('添加成功', '请继续操作', 'success');

                }
            });
        }

你可能感兴趣的:(开发中遇到的错误及解决方案)