为什么在使用 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 object 和 FormData
需要一个 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 函数。
我刚刚花了好几分钟调试 why new FormData($("#ImageEditorForm"));
不工作。转向 Stack Overflow 后,我在另一个线程中发现了使用 new FormData($("#ImageEditorForm")[0]);
代替的建议。
我进行了更改,没想到会发生任何事情。相反,代码现在可以完美地按预期运行。以前,没有任何内容被提交到服务器。现在,表单数据和文件按预期显示。
我的问题是为什么需要“[0]”?在 DOM 中只有一个具有该 ID 的元素。按ID选择应该return只有一个元素吧?这是怎么回事?
$("#ImageEditorForm")
returns 一个 jQuery object 和 FormData
需要一个 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 函数。