如何通过 AJAX post CKEDITOR 值以及其他输入
How to post the CKEDITOR value along with other inputs via AJAX
我在我的 asp.net 核心项目中有部分视图,我想 post 所有 input
和 select
和 editor
值到控制器AJAX。
我可以 post 所有 input
和 select
标记到控制器但不能 post CkEditor 值。
我当然可以在 jQuery 中获取 CkEditor 值,但不能 select 它。
局部视图:
@model LibraryProject.Models.ViewModels.AddEditBookViewModel
<form method="post" enctype="multipart/form-data">
<div class="modal-body form-horizontal">
<div class="row">
<div class="form-group">
<label asp-for="BookName" class="col-lg-2 col-sm-2 control-label"></label>
<div class="col-lg-6">
<input asp-for="BookName" class="form-control" />
</div>
</div>
<div class="form-group">
<label asp-for="BookDescription" class="col-lg-2 col-sm-2 control-label"></label>
<div class="col-lg-9">
<textarea id="BookDescription" name="BookDescription" asp-for="BookDescription" class="form-control"></textarea>
</div>
<script type="text/javascript">
CKEDITOR.replace('BookDescription');
</script>
</div>
<div class="form-group">
<label asp-for="BookGroupID" class="col-lg-2 col-sm-2 control-label"></label>
<div class="col-lg-6">
<select asp-for="BookGroupID" asp-items="@Model.BookGroups" class="form-control"></select>
</div>
</div>
<div class="form-group">
<label asp-for="AuthorID" class="col-lg-2 col-sm-2 control-label"></label>
<div class="col-lg-6">
<select asp-for="AuthorID" asp-items="@Model.Authors" class="form-control"></select>
</div>
</div>
<div class="form-group">
<label asp-for="BookPageCount" class="col-lg-2 col-sm-2 control-label"></label>
<div class="col-lg-6">
<input asp-for="BookPageCount" class="form-control" />
</div>
</div>
<input type="file" id="files" name="files" multiple />
</div>
</div>
<div class="modal-footer">
<input type="button" id="submitinfo" class="btn btn-success" value="Add Book" />
</div>
</form>
还有我的jQuery代码:
<script>
$(document).on('click', '#submitinfo', function (evt) {
evt.preventDefault();
var fileupload = $("#files").get(0);
var files = fileupload.files;
var data = new FormData();
for (var i = 0; i < files.length; i++) {
data.append('files', files[i]);
}
//In this line I can get editor value
var editorval = CKEDITOR.instances['BookDescription'].getData();
//***here i can post all input and select tag value but can`t post editor value along with other
$('input,select').each(function (x, y) {
data.append($(y).attr("name"), $(y).val());
});
$.ajax({
type: "post",
url: '@Url.Action("AddBook", "Book")',
contentType: false,
processData: false,
data: data
}).done(function (res) {
if (res.status === "success") {
alert(res.message);
} else {
$.each(res.errors, function (a, b) {
alert(b);
});
}
}).fail(function (xhr, b, error) {
alert(error);
});
});
</script>
现在如何 post 编辑器值以及其他在 jQuery 代码中标记为 3 星的值?
您可以从 CKEditor 中读取值并将其添加到表单数据中。
$('input,select').each(function (x, y) {
data.append($(y).attr("name"), $(y).val());
});
var editorval = CKEDITOR.instances['BookDescription'].getData();
data.append('BookDescription',editorval);
我在我的 asp.net 核心项目中有部分视图,我想 post 所有 input
和 select
和 editor
值到控制器AJAX。
我可以 post 所有 input
和 select
标记到控制器但不能 post CkEditor 值。
我当然可以在 jQuery 中获取 CkEditor 值,但不能 select 它。
局部视图:
@model LibraryProject.Models.ViewModels.AddEditBookViewModel
<form method="post" enctype="multipart/form-data">
<div class="modal-body form-horizontal">
<div class="row">
<div class="form-group">
<label asp-for="BookName" class="col-lg-2 col-sm-2 control-label"></label>
<div class="col-lg-6">
<input asp-for="BookName" class="form-control" />
</div>
</div>
<div class="form-group">
<label asp-for="BookDescription" class="col-lg-2 col-sm-2 control-label"></label>
<div class="col-lg-9">
<textarea id="BookDescription" name="BookDescription" asp-for="BookDescription" class="form-control"></textarea>
</div>
<script type="text/javascript">
CKEDITOR.replace('BookDescription');
</script>
</div>
<div class="form-group">
<label asp-for="BookGroupID" class="col-lg-2 col-sm-2 control-label"></label>
<div class="col-lg-6">
<select asp-for="BookGroupID" asp-items="@Model.BookGroups" class="form-control"></select>
</div>
</div>
<div class="form-group">
<label asp-for="AuthorID" class="col-lg-2 col-sm-2 control-label"></label>
<div class="col-lg-6">
<select asp-for="AuthorID" asp-items="@Model.Authors" class="form-control"></select>
</div>
</div>
<div class="form-group">
<label asp-for="BookPageCount" class="col-lg-2 col-sm-2 control-label"></label>
<div class="col-lg-6">
<input asp-for="BookPageCount" class="form-control" />
</div>
</div>
<input type="file" id="files" name="files" multiple />
</div>
</div>
<div class="modal-footer">
<input type="button" id="submitinfo" class="btn btn-success" value="Add Book" />
</div>
</form>
还有我的jQuery代码:
<script>
$(document).on('click', '#submitinfo', function (evt) {
evt.preventDefault();
var fileupload = $("#files").get(0);
var files = fileupload.files;
var data = new FormData();
for (var i = 0; i < files.length; i++) {
data.append('files', files[i]);
}
//In this line I can get editor value
var editorval = CKEDITOR.instances['BookDescription'].getData();
//***here i can post all input and select tag value but can`t post editor value along with other
$('input,select').each(function (x, y) {
data.append($(y).attr("name"), $(y).val());
});
$.ajax({
type: "post",
url: '@Url.Action("AddBook", "Book")',
contentType: false,
processData: false,
data: data
}).done(function (res) {
if (res.status === "success") {
alert(res.message);
} else {
$.each(res.errors, function (a, b) {
alert(b);
});
}
}).fail(function (xhr, b, error) {
alert(error);
});
});
</script>
现在如何 post 编辑器值以及其他在 jQuery 代码中标记为 3 星的值?
您可以从 CKEditor 中读取值并将其添加到表单数据中。
$('input,select').each(function (x, y) {
data.append($(y).attr("name"), $(y).val());
});
var editorval = CKEDITOR.instances['BookDescription'].getData();
data.append('BookDescription',editorval);