如何组合两个javascript FormData对象

时间:2014-03-14 15:43:32

标签: javascript jquery jquery-ui jquery-ui-dialog

我需要组合两个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()来组合没有文件输入的表单时,它不起作用。知道怎么做吗?

2 个答案:

答案 0 :(得分:7)

你做不到。遗憾的是,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);

答案 1 :(得分:3)

我是这样做的:

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]);
}