无法发送多个表单字段formdata dropzone.js

时间:2013-06-01 17:28:15

标签: javascript input form-data dropzone.js

我遇到问题发送图片有一个文本区域字段供客户端发送照片说明,当他发送到数据库发送时好像所有人都有相同的描述只插入一个描述,

我正在使用图书馆DROPZONE.JS http://dropzonejs.com/

关注我的代码..请帮帮我。

Dropzone.options.upload = {
    thumbnailWidth: 246,
    thumbnailHeight: 173,
    enqueueForUpload:false,
    paramName: "userfile",
    sending: function(file, xhr, formData) {    
        formData.append("titulo", $("#titulo").val());
        formData.append("evento", <?php echo $this->uri->segment(4); ?>);
        formData.append("capa", $("#cap").val());
    }
};

function upload() {
    var dz = Dropzone.forElement("#upload");
    for (var i = 0; i < dz.files.length; i++) {
        dz.filesQueue.push(dz.files[i]);
    }
    dz.processQueue(); 
}

2 个答案:

答案 0 :(得分:2)

如上所述,整个文档中只能有一个具有id的DOM元素,否则您将遇到问题。这可以通过将文件名添加到文本框字段的id中来动态解决。

在previewTemplate

中添加文本框的代码
previewTemplate: "<div class=\"dz-preview dz-file-preview\"> ...
<input type=\"text\" class=\"titulo\" data-dz-titulo >
...
data-dz-errormessage></span></div>\n</div>"

当通过addedfile函数呈现previewTemplate时,创建一个名为titulo + file.name的id,为您的元素提供唯一的id。这可以通过在addedfile函数中添加一行代码来完成。

addedfile: function(file) {
    file.previewElement = Dropzone.createElement(this.options.previewTemplate);
    ...
    file.previewElement.querySelector("[data-dz-titulo]").id = "titulo" + file.name;
    ...
    file.previewElement.querySelector("[data-dz-size]").innerHTML = this.filesize(file.size);
},

现在您还必须使用文件名来获取发送功能中匹配的titulo。

sending: function(file, xhr, formData) {
    var filetitulo = document.getElementById('titulo' +file.name).value;
    formData.append("titulo", filetitulo);
    });

答案 1 :(得分:1)

当你使用$("#titulo")时,你会引用id为titulo的输入/ textarea。

例如<input type="text" id="titulo">

整个文档中只能有一个DOM元素。

将您的元素更改为<input type="text" class="titulo">,然后使用$(".titulo")[0]$(".titulo")[1]之类的内容来选择字段。