javascript - 在 sendingmultiple 上使用 dropzone.js 发送 formData

标签 javascript dropzone.js

dropzone.js 文档/wiki 没有说明如何发送表单字段。

我刚刚读到有关 FormData object 的信息它说明了如何使用表单字段填充对象。问题是用整个表单填充对象不会发送数据,但如果我一个接一个地附加表单字段,它们就会被发送...

这个有效:

formData.append('name', jQuery('#name').val());

这不是:

var myForm = document.querySelector('form');
formData = new FormData(myForm);

第一个示例将发送 #name 字段,但第二个示例不会发送任何内容(仅发送文件)。

我怎样才能触发它?我想让 dropzone 将整个表单连同文件一起发送(都在同一个请求中)。

init: function() {
    var myDropzone = this,
        submitButton = document.querySelector("[type=submit]");

    submitButton.addEventListener('click', function(e) {
        e.preventDefault();
        e.stopPropagation();
        myDropzone.processQueue();
    });

    myDropzone.on('sendingmultiple', function(data, xhr, formData) {
        // this will get sent
        formData.append('name', jQuery('#name').val());
        // this won't
        var myForm = document.querySelector('form');
        formData = new FormData(myForm);
    });
    myDropzone.on('successmultiple', function(files, response) {
        //window.location.replace("/home");
    });
    myDropzone.on('errormultiple', function(files, response) {
        alert(response);
    });
}

最佳答案

查看评论...

myDropzone.on('sendingmultiple', function(data, xhr, formData) {

    // this will get sent
    formData.append('name', jQuery('#name').val());

    // this won't -- we don't need this rn, we can just use jQuery
    // var myForm = document.querySelector('form');

    // you are overwriting your formdata here.. remove this
    //formData = new FormData(myForm);

    // instead, just append the form elements to the existing formData
    $("form").find("input").each(function(){
        formData.append($(this).attr("name"), $(this).val());
    });
});

关于javascript - 在 sendingmultiple 上使用 dropzone.js 发送 formData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37083240/

相关文章:

javascript - 监控 JQuery 发出的所有 AJAX 请求?

javascript - Google map : geocode addresses asynchronously, 但按顺序获取他们的响应

javascript - 如何在 Dropzone 上手动触发上传文件事件

javascript - 控制 javascript 模块初始化(dropzone)

javascript - Dropzone 在本地主机上正常工作,在远程服务器上抛出错误

c# - Dropzone.js:将图像上传到 ASP.NET 中的服务器

javascript - $(window).width() 在正常状态下和在检查元素上的响应状态下的区别

javascript - 停止循环 AJAX 查询

javascript - Ajax 无法从 php 加载数据到 div

javascript - 移动使用 Dropzone.js 和 PHP 上传的照片