Javascript formData到数组

时间:2016-08-31 10:30:28

标签: javascript forms form-data

如何将formData“转换”为数组?

这适用于我,但似乎并不适用于所有浏览器: https://developer.mozilla.org/en-US/docs/Web/API/FormData/entries

有没有办法在支持旧浏览器时做同样的事情?

var form_data = new FormData(this);
var form_array = [];

for(var pair of formData.entries()) {
   form_array[pair[0]] = pair[1];
}

更新

我没有运气就试过了:

var entries = form_data.entries();

for (var i = 0; i < entries.length; i++) {
    console.log(entries[i]);
}
console.log(entries);

它给了

Iterator {}

4 个答案:

答案 0 :(得分:1)

现代浏览器上,您可以使用Array.from

const form_array = Array.from(form_data);

来自MDN:

  

Array.from()方法从类似数组或可迭代的对象中创建新的浅复制Array实例。

但是对于旧版浏览器(不使用polyfills),您必须手动打开迭代器的包装:

var formData = new FormData(document.forms[0])
var formArray = [];

formData.forEach(function(value) {
  formArray.push(value);
});

console.log(formArray);
<form>
  <input name="foo" value="5">
  <input name="bar" value="42">
</form>

如果要保存名称/值对,则应遍历表单:

var form = document.forms[0];
var formArray = [];

for (var i = 0; i < form.length; i += 1) {
  formArray.push({ name: form[i].name, value: form[i].value });
}

console.log(formArray);
<form>
  <input name="foo" value="5">
  <input name="bar" value="42">
</form>

答案 1 :(得分:0)

您可能想要look at this w3shcools example

var x = document.getElementById("frm1");
var text = "";
var i;
for (i = 0; i < x.length ;i++) {
    text += x.elements[i].value + "<br>";
}

答案 2 :(得分:0)

我真的很简单。将formData转换为数组是不可能的。如果我找到它的来源,我会更新这个答案。

答案 3 :(得分:0)

可能是

var form_data = new FormData(this);
var array_data = [...form_data]; // ya this works