Как объединить два объекта FormData javascript

мне нужно объединить два объекта FormData и опубликовать их с помощью XMLHttpRequest. Одна из форм содержит файл ввода.

var formData = new FormData(document.forms.namedItem('form-ship'));
var poData = new FormData(document.forms.namedItem('po-form'));

// Combine them
var fData = $.extend(true, formData, poData);

Он не работает, когда я использую $.extend или если я использую serialize() объединить форму, которая не имеет входного файла. Есть идеи, как это сделать?

3 ответов


нельзя. FormData к сожалению, нельзя перечислить.

однако, как вы говорите, только одна из ваших форм содержит ввод файла. Тогда должно быть возможно использовать serializeArray на другой и append данные вручную:

var formData = new FormData(document.forms['form-ship']); // with the file input
var poData = jQuery(document.forms['po-form']).serializeArray();
for (var i=0; i<poData.length; i++)
    formData.append(poData[i].name, poData[i].value);

Я сделал это так:

let formData = new FormData($("#f_articulos")[0]);
let formDataPrecios = new FormData($("#f_listado_precios")[0]);
for (var pair of formDataPrecios.entries()) {
    formData.append(pair[0], pair[1]);
}

вы можете serialize формы и merge их в массив:

var fd1 = $(document.forms['form-id-1']).serializeArray();
var fd2 = $(document.forms['form-id-2']).serializeArray();
var fd = $.merge(fd1, fd2);

клик для jQuery документации SerializeArray страница

клик для страницы слияния документации Jquery