2016-05-07 157 views
3

dropzone.js文檔/ wiki沒有說如何發送表單字段。發送formData使用dropzone.js發送多個

我剛剛閱讀了關於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); 
    }); 
} 
+0

好吧,我得到它現在...你的意思是手動附加在我的表單中輸入,有無關懸浮窗的輸入接受文件。 JS,對吧?我不知道如何做到這一點,將文件數據追加到輸入。 –

回答

3

看評論...

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()); 
    }); 
}); 
+0

c的循環,我越來越慢......謝謝! –