我刚刚花了好几分钟调试why new FormData($("#ImageEditorForm"));
无效。在转向Stack Overflow之后,我在另一个帖子中找到了一个使用new FormData($("#ImageEditorForm")[0]);
的建议。
我做了改变,不期待任何事情发生。相反,代码现在可以完美地运行并且符合预期。以前,没有任何内容提交给服务器。现在,表单数据和文件按预期显示。
我的问题是为什么需要“[0]”? DOM中只有一个带有该ID的元素。按ID选择肯定只会返回一个元素?这是怎么回事?
答案 0 :(得分:4)
$("#ImageEditorForm")
返回jQuery object,FormData
需要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函数。