如何组合两个javascript FormData对象

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

你不能。 遗憾的是, 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 

我是这样做的:

 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它们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文档合并页面