无法从现有表单构建FormData对象

时间:2013-11-17 22:55:23

标签: javascript jquery forms multipartform-data form-data

我正在尝试从页面上的表单构建FormData对象。我得到这样的表单元素:

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

然后我正在构建FormData对象:

var fd = new FormData(form);

由于您无法在FormData对象中记录值(如here所述),因此我将formdata发送到'/',以便我可以在Network Inspector中查看其内容。请求有效负载的内容只是:

------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。我也在Safari 7.0中尝试了相同的结果。

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

1 个答案:

答案 0 :(得分:1)

这种情况正在发生,因为我的输入没有设置name属性。显然,new FormData()$.serialize()会忽略任何没有名字的输入。