DCH*_*DCH 6 html javascript forms ajax jquery
我正在尝试提交一个动态生成的表单,其中包括文件上传。为此,我通过数据库连接获取表单字段。一个字段可以允许多个选定选项。该表格可能看起来像这样:
<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>
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我使用 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) {
...
Run Code Online (Sandbox Code Playgroud)
当我检查元表单对象时,选择的所有条目都具有 selected = true 属性。使用 formData 构造函数时,是否有一个选项我没有看到获取一个选择字段的所有选定条目?我必须使用 formData.append() 手动执行此操作吗?如果是这样,如何确保在使用构造函数和append()时不会得到任何重复项?
这有点令人困惑。
小智 1
您可以在发布之前序列化表单数据,如下代码所示:
var formPostData = $("#formID").serialize();
Run Code Online (Sandbox Code Playgroud)