[英]How to combine two javascript FormData objects
I need to combine two FormData objects and post them using XMLHttpRequest. One of the forms contains file input.我需要组合两个 FormData 对象并使用 XMLHttpRequest 发布它们。forms 之一包含文件输入。
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);
It doesn't work when I use $.extend
or if I use serialize()
to combine the form that doesn't have file input.当我使用
$.extend
或如果我使用serialize()
来组合没有文件输入的表单时,它不起作用。 Any idea how to do this?知道怎么做吗?
You cannot. 你不能。
FormData
is unfortunately not enumerable. 遗憾的是,
FormData
不可枚举。
However, as you say only one of your forms does contain a file input. 但是,正如您所说,只有一个表单确实包含文件输入。 Then it should be possible to use
serializeArray
on the other and append
to the data manually: 然后应该可以在另一个上使用
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);
I did it this way: 我是这样做的:
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]);
}
form_data_1 = new FormData(document.getElementById('form1')) form_data_2 = new FormData(document.getElementById('form2')) form_data_1 = new FormData(document.getElementById('form1')) form_data_2 = new FormData(document.getElementById('form2'))
for (const pair of form_data_2.entries()) {
form_data_1.append(pair[0], pair[1]);
}
for (const pair of form_data_1.entries()) {
console.log(`${pair[0]}, ${pair[1]}`);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.