简体   繁体   English

如何组合两个 javascript FormData 对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM