为什么在使用 new FormData() 时指定 [0]?

Why specify [0] when using new FormData()?

我刚刚花了好几分钟调试 why new FormData($("#ImageEditorForm")); 不工作。转向 Stack Overflow 后,我在另一个线程中发现了使用 new FormData($("#ImageEditorForm")[0]); 代替的建议。

我进行了更改,没想到会发生任何事情。相反,代码现在可以完美地按预期运行。以前,没有任何内容被提交到服务器。现在,表单数据和文件按预期显示。

我的问题是为什么需要“[0]”?在 DOM 中只有一个具有该 ID 的元素。按ID选择应该return只有一个元素吧?这是怎么回事?

$("#ImageEditorForm") returns 一个 jQuery objectFormData 需要一个 DOM 节点。

您可以使用 document.getElementById(id); 其中 returns 一个 DOM 节点。

FormData(document.getElementById("ImageEditorForm"));

或者使用 document.querySelector(selector);,它接受 css 选择器和 returns 节点(如果找到),否则为 null。

选择jQuery时,返回的对象是一个jQuery对象,要获得实际DOM - 节点表示,您可以在[= = = = 20=]对象。

如果您使用了返回几个结果的选择器,就更容易理解为什么您需要索引对象才能到达实际的 DOM-节点,但这是标准的jQuery.

正如 andlrc 所说,您需要将实际的 DOM 节点传递给 FormData 函数。