jQuery Datatable Pipeline на стороне сервера - данные не загружаются - PullRequest
0 голосов
/ 04 июня 2018

Я работаю над jQuery datatable и пытаюсь реализовать функцию конвейера, используя обработку на стороне сервера.(следуя коду, аналогичному предложенному на сайте jQuery)

https://datatables.net/examples/server_side/pipeline.html

Фактический сценарий

Моя реализация отличается только в части данныхгде мои данные - это массив объектов, но согласно ссылке данные получены из ajax ..

Мой ответ Ajax от REST API ::

{
"status": true,
"data": [{
    "dbid": "xyz",
    "name": "QA Pt",
    "email": "a+123@gmail.com",
    "isactive": true,
    "Datecreated": "2018-06-04",
    "lastmodified": "2018-06-04",
    "newfields": {
        "firstname": "QA",
        "lastname": "Pt",
        "viewonlyadmin": "no",
        "usertype": 0
    },
    "userid": "85097428"
}, {
    "dbid": "xyz",
    "name": "QA Pt",
    "email": "a+123@gmail.com",
    "isactive": true,
    "Datecreated": "2018-06-04",
    "lastmodified": "2018-06-04",
    "newfields": {
        "firstname": "QA",
        "lastname": "Pt",
        "viewonlyadmin": "no",
        "usertype": 0
    },
    "userid": "85097428"
}],
"recordsTotal": 597,
"recordsFiltered": 597,
"draw": 1
}

Pipelineфункция и часть разбиения на страницы работают отлично, но данные в таблице всегда отображаются как " Не найдено подходящих записей "

Когда я пытался отладить код, в функция обратного вызова функцияОбъект 'settings' -> aoData всегда пуст.

Ниже приведен скриншот таблицы.

enter image description here

Сценарий2

Другое исправление, которое я пробовал, - передача json.data в функцию drawcallback вместо drawcallback (json) в функции успеха ajax.В этом случае данные отображаются в таблице, но часть нумерации страниц не выполняется.PFB снимок экрана.

enter image description here

Кто-нибудь имеет представление о том, почему эти данные не применяются к таблице?Нужна помощь в устранении этой проблемы ..

1 Ответ

0 голосов
/ 23 сентября 2018

Предполагается, что вы пытаетесь вернуть json из API следующим образом.

return Json(new
            {
                // this is what datatables wants sending back
                draw = 1,
                recordsTotal = result.Count(),
                recordsFiltered = 10,
                data = result
            });

Просто измените это значение на return Json(result); Так что ваш json результат будет выглядеть как

    [{
  "Latitude": 18.00,
  "Longitude": 23.00,
  "Name": "Pune"
}, {
  "Latitude": 14.00,
  "Longitude": 24.00,
  "Name": "Mumbai"
}, {
  "Latitude": 34.004654,
  "Longitude": -4.005465,
  "Name": "Delhi"
}, {
  "Latitude": 23.004564,
  "Longitude": 23.007897,
  "Name": "Jaipur"
}]

Теперь в вашем ajax success сделайте datatables таким.Причина использования ajax success заключается в том, что предполагается, что вы получите все данные за один прием на сервер.

$.ajax({                    
                url: "Your API Url",
                type: "GET",
                contentType: "application/json; charset=utf-8",
                datatype: JSON,
                success: function (result) {
                    var my_columns = [];
                    $.each(result[0], function (key, value) {
                        var my_item = {};
                        my_item.data = key;
                        my_item.title = key;
                        my_columns.push(my_item);
                    });

                    $('#table1').DataTable({
                        "data": result,
                        "columns": my_columns
                    });
                }
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...