尝试使用jQuery.ajax发送FormData时出错
问题描述:
我有一个要发送到服务器的文件。该文件正在FormData对象中传递,而不是路径URI。这是我使用的代码:尝试使用jQuery.ajax发送FormData时出错
let formData = new FormData();
formData.append('enctype', 'multipart/form-data');
formData.append('mode', 'fileInsert');
formData.append('conId', 'asdasd5535asf');
formData.append('user', 'user2422424');
formData.append('filesNumber', 1);
formData.append('msgType', 'fil');
formData.append('file0', file);
$.ajax({
data: formData,
success: function (a, s) {
debugger;
}
});
当代码到达$.ajax
称呼它抛出这个错误:
Uncaught TypeError: Illegal invocation
有什么不对?请注意,jQuery AJAX的配置较早,包括帖子类型,URL等。
答
您需要在您的AJAX请求设置以下属性:
contentType: false,
processData: false
设置contentType
到false
停止被设置content-type
头。同样,将processData
设置为false
将停止正在编码的请求的内容,这在发送FormData
对象时需要。
关于这些和其他$.ajax
属性的详细信息,请参阅jQuery Documentation
尝试添加下列属性'$ .ajax'电话:'的contentType:假的,过程数据:FALSE' –
让我问我的服务器的家伙如果有任何东西正在收到,它现在不会抛出错误 –
它的工作原理,@RoryMcCrossan请给出答案并解释它的作用 –