【发布时间】:2017-06-24 09:29:11
【问题描述】:
我正在尝试提交一个动态生成的表单,其中包括文件上传。 为此,我通过数据库连接获取表单字段。一个字段可以允许多个选择的选项。表单可能如下所示:
<form>
<input type="text" name="xyz"> </input>
<input type="file" name="xyzfile"> </input>
<select multiple name="...">
<option value="...">1</option>
<option value="...">2</option>
...
<option>x</option>
</select>
<select name="...">
<option value="...">1</option>
<option value="...">2</option>
</select>
不幸的是,当我使用 formData-Object 提交表单时,只会传输给定字段的最后选择的选项。 “multiple”属性以某种方式被忽略了。
这是我的代码:
var pId = '1';
metaForm = $('#metaForm')[0];
formData = new FormData(metaForm);
formData.append('a','saveInstance');
formData.append('pId', pId);
$.ajax({
type: 'POST',
url: 'x.php',
contentType: false,
processData: false,
data: formData,
success: function (response) {
...
当我检查 metaForm-Object 时,所有被选中的条目都有属性 selected = true。 在使用 formData-constructor 时,是否有一个选项我看不到获取一个选择字段的所有选定条目? 我是否必须使用 formData.append() 手动执行此操作?如果是这样,我如何确保在使用构造函数 AND append() 时没有重复?
这有点令人困惑。
【问题讨论】:
-
这里只需将您的
<select>命名为末尾的[],并将其作为数组放入您的php 脚本中。 -
你是对的!我没想到。您的评论实际上就是答案,谢谢!
-
@Kaiido,尽管答案与另一个问题基本相同,但我不同意这个问题是完全重复的。另一个问题是关于复选框,这是关于多选;并且由于我想知道如何为多项选择解决此问题,因此您在这个问题的上下文中的一句话答案对我的帮助远远超过另一个接受的答案。
标签: javascript jquery html ajax forms