我正在尝试从页面上的表单构建 FormData 对象。我得到这样的表单元素:
var form = document.forms['upload_form'];
然后我像这样构建 FormData 对象:
var fd = new FormData(form);
由于您无法在 FormData 对象中记录值(如所述 here ),因此我将表单数据发送到“/”,以便我可以在网络检查器中查看其内容。请求负载的内容很简单:
------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 内。这会是一个问题吗?
最佳答案
发生这种情况是因为我没有在输入上设置 name
属性。显然,new FormData()
和 $.serialize()
将忽略任何没有名称的输入。
关于javascript - 无法从现有表单构建 FormData 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20037301/