Захват, если DataTable JSON / AJAX GET правильно заполняется с использованием «Success / Error» - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть DataTable, который выполняет GET, но я думал, что потребуется защита, чтобы помочь улучшить пользовательский интерфейс, и может отображать какую-то ошибку, чтобы пользователь знал, если данные не отображаются, что ошибка имеетпроисходил и не сидел, наблюдая за черным экраном.

В любом случае, я знаю, как сделать это в POST, но мне было интересно, есть ли способ сделать это в GET.

Текущий 'Рабочий код

var existingRuleTable = $('#existingRulesDataTable').DataTable({
    "ordering": false,                                                  // Allows ordering
    "searching": false,                                                 // Searchbox
    "paging": true,                                                     // Pagination
    "info": false,                                                      // Shows 'Showing X of X' information
    "pagingType": 'simple_numbers',                                     // Shows Previous, page numbers & next buttons only
    "pageLength": 10,                                                   // Defaults number of rows to display in table. If changing this value change the show/hide below
    "dom": '<"top"f>rt<"bottom"lp><"clear">',                           // Positions table elements
    "lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]],              // Sets up the amount of records to display
    "fnDrawCallback": function () {
        if ($('#dialPlanListTable').DataTable().rows().count() < 11) {
            $("div[class='bottom']").hide();                            // Hides paginator & dropdown if less than 11 records returned
        } else {
            $("div[class='bottom']").show();                            // Shows paginator & dropdown if 11 or more records are returned
        }
    },
    'ajax': {
        "type": 'GET',
        "url": "js/dataTable.json",                                     
        "data": function (data) {
            return data;
        }
    },
    "columns": [                                                        // Display JSON data in table
        { "data": "position" },
        { "data": "startTime" },
        { "data": "endTime" },
        { "data": "selectedDays" },
        { "data": "selectedDates" },
        { "data": "selectedMonths" },
        { "data": "timeRange" },
        {
            "data": null,
            "render": function (data) {
                if (buttonclicked == 'Modify') {                        // Displays the radio button when 'Mod' clicked
                    return  '<label class="c-radio" style="margin-bottom: 0px">'
                        +   '<input type="radio" name="existingRuleActionRadioButton" value="option1">'
                        +       '<span class="fa fa-check"></span>'
                        +   '</label>';
                } else if (buttonclicked == 'Delete') {                 // Displays the delete button when 'Del' clicked
                    return '<button name="deleteRuleButton" class="btn btn-danger" id="' + data.position + '">'
                        + '<i class="fa fa-trash-o" style="font-size: large"></i>'
                        + '</button>';
                } else {
                    return ''; // Needed for the 'Add' button click
                }
            }
        }
    ]
});

То, что я пробовал Добавил это в конце, который работает, НО я не знаю состояние (успех /ошибка)

"initComplete": function(settings, json) {
     alert( 'DataTables has finished its initialisation.' );
}

Затем попытался ударить AJAX, который выстрелил и выпал в правильное «Успех / Ошибка», но это не делает мой DataTable

'ajax': {
    "type": 'GET',
    "url": "js/dataTable.json",
    "data": function (data) {
        return data;
    },
    success: function(data){
        alert('Success');
    },
    error: function(e){
        alert('Failed');
    }
},

1 Ответ

0 голосов
/ 28 февраля 2019

Datatables предоставляет ряд событий, к которым можно подключиться:

https://datatables.net/reference/event/

В этом случае вместо использования initComplete (что, по-видимому, для редактора DataTables)'plugin), похоже, что событие, к которому нужно подключиться, это событие error:

https://datatables.net/reference/event/error

Вы также можете посмотреть на события draw и xhr.

Похоже, использование success: и error: в свойстве ajax: перезаписывает dataTables, используя их для визуализации таблицы;Это может быть причиной того, что событие xhr отображается, а не раскрывает основное обещание Ajax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...