使用console.log查看FormData对象

4

我创建了一个像这样的FormData对象:

var data = new FormData()
data.append('image', input[0].files[0])
data.append('user', 'hubot')

现在,当我尝试像这样检查它时

console.log(data)

我得到了一个空的FormData对象(唯一的属性是__proto__)。没有imageuser属性。


1
console.log(Array.from(data)); - ponury-kostek
@ponury-kostek 好的,谢谢。它有效了。但是我的问题现在是为什么简单的console.log可以使用像user = {name: "John"}这样的对象,但不能使用FormData? - Mulligan
2个回答

15

你需要迭代 entriesFormData 是一种 object 类型,因此不能直接记录它本身,而是要通过 get 方法获取值或迭代 entries。以下是示例。

var data = new FormData()
//data.append('image', input[0].files[0])
data.append('user', 'hubot')
   
for(var pair of data.entries()) {
   console.log(pair[0]+ ', '+ pair[1]); 
}
  

如果您只想一次获取一个值,则可以通过key来获取。

  console.log(data.get('user'));
  // 'hubot'

编辑

展开语法允许在期望零个或多个参数(用于函数调用)或元素(用于数组文字)的位置处展开可迭代对象,例如数组表达式或字符串,或在期望零个或多个键值对(对于对象文字)的位置处展开对象表达式。 了解更多。因此,如果您只想简单地记录

   // console.log(...data);

好的,谢谢。它有效了。但是我的问题现在是为什么简单的 console.log 可以使用像 user = {name: "John"} 这样的对象,但不能使用 FormData? - Mulligan

1
尝试使用这个:
for (var d of data.entries()) {
    console.log(d); 
    // Do whatever with d
}

好的,谢谢。它有效了。但我的问题是为什么像user = {name: "John"}这样的对象可以使用简单的console.log,而FormData却不行? - Mulligan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接