如何组合两个javascript FormData对象

u54*_*54r 10 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);
Run Code Online (Sandbox Code Playgroud)

当我使用$.extend或者如果我serialize()用来组合没有文件输入的表单时,它不起作用.知道怎么做吗?

Ber*_*rgi 9

你不能.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);
Run Code Online (Sandbox Code Playgroud)


and*_*112 9

我这样做是这样的:

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]);
}
Run Code Online (Sandbox Code Playgroud)

  • 对于任何使用此功能的人来说,IE 和其他浏览器都不太支持“entries”的使用:https://caniuse.com/#search=entries (2认同)