如何在jQuery Ajax中使用formData在laravel中上传文件 [英] How to upload file in laravel with formData in jquery ajax
问题描述
我正在使用laravel 5.4和jquery Ajax上传文件和一些表单数据.
I am using laravel 5.4 and jquery Ajax to upload file and some form data.
我正在使用以下代码
function submitDocument(){
var formData = new FormData(); // Currently empty
var _token = $("#_token").val().trim();
formData.append('title', $("#title").val());
formData.append("doc",$("#doc")[0].files[0]);
$.ajax({
url: "documents",
method: "post",
data:{_token,formData},
}).done(function(data) {
});
return false;// Not to submit page
}
我收到错误消息
未捕获的TypeError:非法调用
Uncaught TypeError: Illegal invocation
我该如何解决?预先感谢您的宝贵时间.
How can I fix this ? Thanks in advance for your time.
我能够通过使用
console.log(formData.get('title'));
console.log(formData.get('doc'));
推荐答案
尝试在代码中添加processData: false, contentType: false
为此替换脚本:
function submitDocument(){
var formData = new FormData(); // Currently empty
var _token = $("#_token").val().trim();
formData.append('title', $("#title").val());
formData.append("doc",$("#doc")[0].files[0]);
$.ajax({
url: "documents",
method: "post",
data:{_token,formData},
cache : false,
processData: false,
contentType: false
}).done(function(data) {
});
return false;// Not to submit page
}
默认情况下,作为对象传入data选项的数据将被处理并转换为查询字符串,以适合默认的内容类型"application/x-www-form-urlencoded".如果要发送DOMDocument或其他未处理的数据,请将此选项设置为false.
By default, data passed in to the data option as an object will be processed and transformed into a query string, fitting to the default content-type "application/x-www-form-urlencoded". If you want to send a DOMDocument, or other non-processed data, set this option to false.
这篇关于如何在jQuery Ajax中使用formData在laravel中上传文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!