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

标签 javascript jquery forms multipartform-data form-data

我正在尝试从页面上的表单构建 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/

相关文章:

php - 获取JSON : NetworkError: 500 Internal Server Error

javascript - 通过javascript将json转换成树数据

javascript settimeout 永远不会触发函数并使 chrome 崩溃

javascript - 使用 Splice() 函数,如何删除特定的数组元素?

javascript - Google Apps 脚本 google.script.run.withSuccessHandler 失败

javascript - 为什么 validateform() 返回 false 时提交了表单?

php - 从 PHP 文件中的 JSON 数据自动完成文本框

jquery - 如何替换已初始化的对象?

javascript - ajax 请求适用于 $ 但不适用于 Angular

php - Symfony 3.0.1 CSRF token 存在但无效