javascript - 使用 FormData 上传 JQuery/AJAX 文件,文件未发布

标签 javascript php jquery ajax

这在直接提交表单时有效。也许我没有正确地将“表单”对象传递给 FormData。 Laravel 说"file"没有被传递,当我 console.log(formData) 时,我看到一个包含 proto 属性的对象,但据我所知,我没有任何字段

HTML

<form enctype="multipart/form-data" accept-charset="utf-8" method="POST" action="/file">
<input id="file" type="file" name="file">
<button type="submit">Upload</button>
</form>

JS

$('.file-upload-form').submit(function (e) {
    e.preventDefault();
    submitUploadFileForm($(this)); //also tried just passing this without wrapper
});
function submitUploadFileForm(form){
    console.log(form);
    var formData = new FormData(form); //Needed for passing file
    console.log(formData);
    $.ajax({
        type: 'post',
        url: '/file',
        data: formData,
        success: function () {
            alert('done');
        },
        processData: false,
        contentType: false
    });
}

最佳答案

FormData 接受 form DOMElement,而不是 jQuery 对象。您需要调用 submitUploadFileForm(),只需将 this 引用传递给 form:

submitUploadFileForm(this);

关于javascript - 使用 FormData 上传 JQuery/AJAX 文件,文件未发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34439282/

相关文章:

javascript - 将 Base64/BLOB 图像数据从 PHP 发送到 Javascript

php - 为什么要提交这个表单?

php - 引用:什么是变量范围,哪些变量可从何处访问,什么是“ undefined variable ”错误?

javascript - 从 jQuery 函数引用 Javascript "Class"方法

javascript - 为什么 child 可以重定向父框架?

javascript - 关于 anchor 标记的文本更改,使用 JavaScript 显示/隐藏 div

javascript - 气体 : "InternalError: Array length exceeds supported capacity limit."

php - 如何从pdf中提取文本层和背景层?

jquery - 使用 jquery 及其 css - 想要摆弄样式

javascript - 当设置对话框样式时,我应该使用什么作为选择器?