Получение parserError при вызове контроллера с использованием ajax и установке данных в datatable в проекте mvc - PullRequest
0 голосов
/ 01 августа 2020

Я работаю в mvc, и я получил parserError, когда я вызываю контроллер с помощью ajax и хочу установить список с использованием datatable. но я не знаю, что я здесь делаю не так.

при попытке отладки я не получил себя в контроллере.

После поиска я обнаружил, что используется тип данных: 'текст 'но это не нужно.

Мне нужны только json данные и я хочу установить их с помощью таблицы данных.

но не знаю, что я здесь делаю не так.

У кого-нибудь есть идеи, позвольте мне поделиться здесь.

<div class="card-body">
        <table id="userGrid" class="table table-bordered table-striped">
            <thead>
                <tr>
                    <th>Email</th>
                    <th>Password</th>
                    <th>Zipcode</th>
                    <th>IsAdmin</th>
                    <th>IsFirstTimeLoggedIn</th>
                </tr>
            </thead>
        </table>
    </div>


@section Scripts{
        <script type="text/javascript">
            $(function () {
                $.ajax({
                    type: "POST",
                    url: "/User/UserList",
                    data: '{}',
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: OnSuccess,
                    failure: function (response) {
                        alert("failure:"+response.d);
                    },
                    error: function (response, jqXHR, textStatus, errorThrown) {
                        debugger
                        alert("Error:"+response.d);
                    }
                });
            });
            function OnSuccess(response) {
                $("#userGrid").DataTable(
                    {
                         "paging": true,
                        "lengthChange": false,
                        "searching": false,
                        "ordering": true,
                        "info": true,
                        "autoWidth": false,
                        "responsive": true,
                        "serverSide": true,
                        "processing":true,
                        data: response,
                        columns: [{ "data": "Email" },
                        { "data": "Password" },
                        { "data": "Zipcode" },
                        { "data": "IsAdmin" },
                        { "data": "IsFirstTimeLoggedIn" }]
                    });
            };
        </script>
    }


public ActionResult UserList()
    {
        try
        {
            List<User> users = _userService.GetAllUsers().ToList();
            return Json(new { data = users }, JsonRequestBehavior.AllowGet);
        }
        catch (Exception ex)
        {
            _log.ErrorFormat("Error in get user list. Error : {0}", ex.Message);
            _log.Error(ex);
            throw;
        }
        }

1 Ответ

0 голосов
/ 03 августа 2020

Мне нужны только json данные и я хочу установить с помощью таблицы данных

Поскольку формат json, возвращаемый методом UserList, содержит data перед пользователями вам необходимо получить возвращенный набор данных через response.data в методе успеха ajax.

С другой стороны, потому что вы получаете данные в успешном (не напрямую через ajax), вам нужно закомментировать оператор "serverSide": true .

Вот пример:

 function OnSuccess(response) {
                $("#userGrid").DataTable(
                    {
                         "paging": true,
                        "lengthChange": false,
                        "searching": false,
                        "ordering": true,
                        "info": true,
                        "autoWidth": false,
                        "responsive": true,
                        // "serverSide": true,
                        "processing":true,
                        data: response.data,
                        columns: [{ "data": "Email" },
                        { "data": "Password" },
                        { "data": "Zipcode" },
                        { "data": "IsAdmin" },
                        { "data": "IsFirstTimeLoggedIn" }]
                    });
            };

Вот результат теста:

введите описание изображения здесь

...