JavaScript formData to array

idfiyjo8  于 2023-06-28  发布在  Java
关注(0)|答案(4)|浏览(180)

如何将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 {}
nwlqm0z1

nwlqm0z11#

现代浏览器上,您可以使用Array.from来获取键/值对列表,或使用Object.fromEntriesFormData转换为标准对象。

const formData = new FormData();

formData.append("question", "Life, Universe, Everything")
formData.append("answer", 42);
formData.append("isItTrue", false);

// An array of [key, value] pairs.
const pairs = Array.from(formData);

// An object with { key: values }.
const obj = Object.fromEntries(formData);

console.log(pairs);
console.log(obj);

来自MDN:

**Array.from()**方法从一个类似数组或可迭代的对象创建一个新的、浅拷贝的Array示例。
**Object.fromEntries()**静态方法将键值对列表转换为对象。

但是对于旧版浏览器(没有polyfill),必须手动解包迭代器:

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>
uoifb46i

uoifb46i2#

您可能需要使用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>";
}
bqf10yzr

bqf10yzr3#

可能是

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

t1qtbnec4#

此代码生成一个对象,其中列出示例表单中所有字段的名称和值:

var form=document.getElementById(formID);
var pairs={};
for (var i=0; i<form.length ;i++)
    pairs[form[i].name]=form[i].value;
j=JSON.stringify(pairs,null,3);
alert(j);

相关问题