可以'无法从现有表单中生成FormData对象

Can't build a FormData object out of existing form

本文关键字:表单 对象 FormData 可以      更新时间:2023-09-26

我正试图从页面上的表单中构建一个FormData对象。我得到了这样的表单元素:

var form = document.forms['upload_form'];

然后我构建这样的FormData对象:

var fd = new FormData(form);

由于无法在FormData对象中记录值(如本文所述),我将表单数据发送到"/",以便在网络检查器中查看其内容。请求有效载荷的内容很简单:

------WebKitFormBoundaryKAgAjii8IMLyJFcB--

什么都没有!如果我手动将一个值附加到表单中,如下所示:

fd.append("username", "Groucho");

它起作用:

------WebKitFormBoundaryZikgEBo7sTzvlndC
Content-Disposition: form-data; name="username"
Groucho

我还尝试过以其他方式选择表单元素,例如使用jQuery:

var form = $(".upload_form");
var fd = new FormData(form[0]);

无论我如何选择表单元素,表单变量中肯定有表单(它不是null或空的),但用它作为参数构建FormData对象似乎不起作用。有人能帮忙吗?

PS我使用的是Chrome 31.0.1650.57。我也在Safari7.0中尝试过,结果也是一样的。

另一件事:此表单中的输入嵌套在多个div中。这会是个问题吗?

之所以发生这种情况,是因为我的输入上没有设置name属性。显然,new FormData()$.serialize()将忽略任何没有名称的输入。