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

时间:2016-05-07 19:16:56

标签: javascript jquery form-data

我刚刚花了好几分钟调试why new FormData($("#ImageEditorForm"));无效。在转向Stack Overflow之后,我在另一个帖子中找到了一个使用new FormData($("#ImageEditorForm")[0]);的建议。

我做了改变,不期待任何事情发生。相反,代码现在可以完美地运行并且符合预期。以前,没有任何内容提交给服务器。现在,表单数据和文件按预期显示。

我的问题是为什么需要“[0]”? DOM中只有一个带有该ID的元素。按ID选择肯定只会返回一个元素?这是怎么回事?

2 个答案:

答案 0 :(得分:4)

$("#ImageEditorForm")返回jQuery objectFormData需要DOM节点。

您可以使用返回DOM节点的document.getElementById(id);

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

或者使用带有css选择器的document.querySelector(selector);并在找到时返回节点,否则返回null。

答案 1 :(得分:2)

当使用jQuery选择时,返回的对象是一个jQuery对象,为了获得它所代表的实际DOM节点,你在jQuery对象上使用[0]。

如果您使用了返回几个结果的选择器,那么理解为什么需要索引到对象以获取实际DOM节点会更容易,但这是标准的jQuery。

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