简体   繁体   中英

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.

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. Any idea how to do this?

You cannot. FormData is unfortunately not enumerable.

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:

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'))

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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