在 JavaScript 中,FormData对象不能直接通过 console.log(formData)输出完整内容(控制台仅显示 FormData {}的抽象表示),但可以通过以下方法遍历并打印其字段和值:


​方法 1:使用 for...of循环遍历 entries()

通过 formData.entries()获取键值对的迭代器,逐项打印:


javascript

下载

复制

运行


const formData = new FormData(); formData.append("username", "John"); formData.append("file", fileInput.files[0]); // 假设有文件 // 遍历并打印所有字段和值 for (const [key, value] of formData.entries()) { if (value instanceof File) { console.log(`${key}: File(${value.name})`); // 特殊处理文件 } else { console.log(`${key}: ${value}`); } }

​输出示例​​:


复制


username: John file: File(example.jpg)

​适用场景​​:需要区分普通字段和文件类型时

1

6

9


​方法 2:转换为普通对象后打印​

使用 Object.fromEntries()将 FormData转为普通对象,再通过 console.log输出:


javascript

下载

复制

运行


const formData = new FormData(document.querySelector('form')); const data = Object.fromEntries(formData.entries()); console.log(data); // 输出: { username: "John", file: File }

​注意​​:文件字段会显示为 File对象,需展开查看详情

5

7


​方法 3:使用 forEach方法遍历​

直接调用 formData.forEach()遍历键值对:


javascript

下载

复制

运行


formData.forEach((value, key) => { console.log(`${key}: ${value instanceof File ? value.name : value}`); });

​优点​​:代码更简洁,无需处理迭代器

6

8


​方法 4:转换为 URL 查询字符串​

将 FormData转为类似 key1=value1&key2=value2的格式:


javascript

下载

复制

运行


const params = new URLSearchParams(formData); console.log(params.toString()); // 输出: username=John&file=example.jpg

​适用场景​​:调试表单提交的原始数据格式

3

7


​特殊处理文件字段​

若表单包含文件,需单独处理文件名或大小:


javascript

下载

复制

运行


for (const [key, value] of formData.entries()) { if (value instanceof File) { console.log(`${key}: ${value.name} (${(value.size / 1024).toFixed(2)} KB)`); } }

​输出示例​​:


复制


file: example.jpg (1024.00 KB)

1

6

9


​总结建议​

  • ​简单调试​​:优先使用 Object.fromEntries()快速查看所有字段

    5

    7

  • ​详细输出​​:选择 for...of或 forEach遍历,可自定义格式

    6

    8

  • ​文件字段​​:通过 instanceof File检查并输出文件信息

    9

若需进一步验证数据,可结合 FormData的 get()或 getAll()方法获取特定字段值

8

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐