formData和“选择多个”

时间:2017-02-07 08:11:11

标签: javascript jquery html ajax forms

我正在尝试提交动态生成的表单,其中包含文件上传。 为此,我通过DB连接获取表单字段。字段可以允许多个选定的选项。表单可能如下所示:

<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()时没有重复?

这有点令人困惑。

1 个答案:

答案 0 :(得分:1)

您可以在发布之前序列化表单数据,如下所示:

var formPostData  = $("#formID").serialize();