【发布时间】:2017-01-03 16:11:23
【问题描述】:
起点:我有一个有多种形式的网站,如下所示:
<form class="form card-content-ingredients" action="" id="form-id-0" enctype="multipart/form-data">
<ul>
<li class="form__item">
<label class="form__label" for="name">Text</label>
<input class="form__input form__input--textfield" type="text" name="description" value="" placeholder="description">
</li>
<li class="form__item">
<label class="btn btn--invalid" for="file" >picture</label>
<input class="form__input form__input--file" id="file" type="file" name="img" value="picture">
</li>
<ul class="form__item--multi-align-right">
<li>
<input class="btn btn--invalid" type="button" value="cancel">
</li>
<li>
<input class="btn btn--invalid btn__save" type="button" value="Save" data-item-id="0" data-rqstPath="/xyz">
</li>
</ul>
</ul>
</form>
当我点击保存时,AJAX 请求会在 FormData 接口中传输所有数据,包括文件。
我的问题是:只有第一个表单元素中的文件被传输。对于所有其他表单,当我点击保存时,文件输入字段不包括在内,但是奇怪的是所有其他输入字段。当我更改表格的顺序时,它仍然具有相同的效果。 我只使用了一个处理表单数据的 JS 函数,如下所示:
function updateSettingsAJAX( itemID, rqstPath) {
if (!(typeof itemID !== typeof undefined && itemID !== false) ||
!(typeof rqstPath !== typeof undefined && rqstPath !== false)) {
return false;
}
var formData = new FormData($('#form-id-' + itemID)[0]);
formData.append("itemID", itemID);
return $.ajax({
type: "POST",
url: rqstPath,
data: formData,
processData: false,
contentType: false,
});
如果有人可以帮助我解决我的问题,我将不胜感激。
【问题讨论】:
-
您在这些文件输入中是否有重复的 ID?都是
file吗? -
谢谢@thebluefox,解决了我的问题!!
-
我已经发布了一个答案@ArtemisUser 来结束这个问题 - 很高兴我能提供帮助:)
-
我们这里的标题中没有“SOLVED”。如果您找到了问题的答案,请发布并接受或删除问题
标签: javascript html ajax forms form-data