房间:362 未捕获的类型错误:无法读取未定义的属性“长度”
2019-09-07
1417
我正在使用 ajax 发布表单数据,但单击提交按钮时出现错误。似乎 Ajax 认为
#img1
为空值。并且不会将文件输入值发送到操作。
检查元素 中的错误消息:
Uncaught TypeError: Cannot read property 'length' of undefined at HTMLInputElement.<anonymous> (Room:403) at HTMLDocument.dispatch (jquery-3.3.1.min.js:2) at HTMLDocument.y.handle (jquery-3.3.1.min.js:2)
Ajax 代码:
$(document).on('click', '#submitTheRoom', function (evt) {
evt.preventDefault();
var FileUpload = $("#img1").get(0);
var Files = FileUpload.Files;
var Data = new FormData();
for (var i = 0; i < Files.length; i++) {
Data.append('img1', Files[i]);
}
$('input, select').each(function (x,y) {
Data.append($(y).attr('name'), $(y).val());
});
$.ajax({
type: "post",
url: '@Url.Action("AddEditRoom", "Room", new { area = "Admin"})',
contentType: false,
processData: false,
data: Data
}).done(function (res) {
if (res.status === "success") {
alert(res.message);
} else {
alert("در ثبت اطلاعات مشکلی بوجود آمده. لطفا دوباره تلاش کنید");
}
}).fail(function (xhr, b, error) {
alert(error);
});
})
我的表单:
<form method="post" enctype="multipart/form-data">
@Html.AntiForgeryToken()
<input asp-for="Id" class="form-control hidden formInput" />
<div class="form-group myFormGroup col-lg-6 col-md-12">
<label asp-for="Name" class="col-lg-3 col-sm-3 control-label formLabel"></label>
<div class="col-lg-9 myInputContainer">
<input asp-for="Name" class="form-control formInput" />
</div>
<span asp-validation-for="Name" class="text-danger myError"></span>
</div>
<div class="form-group myFormGroup col-lg-6 col-md-12">
<label asp-for="Explanation" class="col-lg-3 col-sm-3 control-label formLabel"></label>
<div class="col-lg-9 myInputContainer">
<input asp-for="Explanation" class="form-control formInput" />
</div>
<span asp-validation-for="Explanation" class="text-danger myError"></span>
</div>
<div class="form-group myFormGroup col-lg-6 col-md-12">
<label asp-for="RoomImageOne" class="col-lg-3 col-sm-3 control-label formLabel"></label>
<div class="col-lg-9 myInputContainer">
<input id="img1" name="img1" type="file"
class="form-control formInput" asp-for="RoomImageOne" />
</div>
<span asp-validation-for="RoomImageOne" class="text-danger myError"></span>
</div>
<div class="modal-footer">
<input type="button" id="submitTheRoom" class="btn btn-success" value="submit">
</div>
</form>
2个回答
不是答案,稍后我会删除。
注释掉你的 js 并使用此代码进行测试:
$(document).on('click', '#submitTheRoom', function(evt) {
evt.preventDefault();
var FileUpload = $("#img1").get(0);
console.log("FileUpload: " + FileUpload);
var Files = FileUpload.files; // lower case f.
console.log("Files: " + Files); // [object FileList]
console.log("Files.length: " + Files.length); // should be 0 on first load.
});
你得到的结果相同吗?不同吗?
将此代码添加到你原来的问题中并在那里添加评论,而不是在这里。如果它没用,我会删除它。
wazz
2019-09-07
936857950
返回未定义。检查控制台上的FileUpload的值,然后查看FileUpload.files是否返回任何内容。尝试
621625864
而不是。我怀疑上案可能是错字
Nsoseka
2019-09-07