如何通过 AJAX post CKEDITOR 值以及其他输入

How to post the CKEDITOR value along with other inputs via AJAX

我在我的 asp.net 核心项目中有部分视图,我想 post 所有 inputselecteditor 值到控制器AJAX。 我可以 post 所有 inputselect 标记到控制器但不能 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);