【问题标题】:How to combine two javascript FormData objects如何组合两个 javascript FormData 对象
【发布时间】:2014-04-20 00:28:30
【问题描述】:

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

【问题讨论】:

  • 能否将两者分别设置为数组的成员,然后发布数组?
  • 我不明白。能详细点吗?

标签: javascript jquery jquery-ui jquery-ui-dialog


【解决方案1】:

不能不能。 FormData is 不幸的是无法枚举。

但是,正如您所说,只有一个表单包含文件输入。然后应该可以在另一个上使用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);

【讨论】:

  • FormData.entries() - 返回一个迭代器,允许遍历此对象中包含的所有键/值对。
【解决方案2】:

我是这样做的:

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-26
  • 1970-01-01
  • 2019-12-02
  • 1970-01-01
  • 1970-01-01
  • 2015-08-06
  • 1970-01-01
相关资源
最近更新 更多