You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取带name属性的表单元素键值对对象?FormData返回空对象

解决FormData打印为空对象的问题

嘿,我懂你遇到的困惑——用new FormData(form)创建表单数据后,直接console.log(formData)却显示空对象,但其实数据并没有丢失!

为什么会显示空对象?

FormData是浏览器专门为表单数据传输设计的特殊对象,它本质上是一个可迭代的键值对集合,但浏览器控制台默认不会自动展开它的内部内容,所以看起来像是空的。

两种获取目标对象的方法

如果你想得到一个以表单元素name为键、value为对应值的普通JS对象,可以试试下面两种方法:

方法1:用forEach遍历转换

手动遍历FormData的每一项,把键值对存入普通对象:

var form = document.getElementById('myForm');
var formData = new FormData(form);
var formObj = {};

// 遍历FormData,填充普通对象
formData.forEach((value, key) => {
  formObj[key] = value;
});

console.log(formObj); // 现在就能看到预期的键值对了

方法2:用Object.fromEntries快速转换(ES6+)

这是更简洁的写法,直接把FormData转换成普通对象:

var form = document.getElementById('myForm');
var formData = new FormData(form);
var formObj = Object.fromEntries(formData);

console.log(formObj);

额外验证:查看FormData的真实内容

如果只是想确认FormData里有没有数据,也可以直接遍历它:

// 用forEach遍历
formData.forEach((value, key) => {
  console.log(`${key}: ${value}`);
});

// 或者用for...of循环
for (let [key, value] of formData) {
  console.log(key, value);
}

注意:FormData只会收集带有name属性的表单元素,你的表单里username已经设置了name属性,所以这部分没问题~

内容的提问来源于stack exchange,提问作者Reza Saadati

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:38:48