我正在尝试从页面上的表单构建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中。这可能是个问题吗?
答案 0 :(得分:1)
这种情况正在发生,因为我的输入没有设置name
属性。显然,new FormData()
和$.serialize()
会忽略任何没有名字的输入。