DataTables Перезагрузка не удалась - PullRequest
0 голосов
/ 15 апреля 2020

Я использую следующую CDN-версию Datatables (https://cdn.datatables.net/1.10.20/js/jquery.dataTables.min.js) Который загружается в нижней части страницы Likeo:

<script type="application/javascript"
            src="https://cdn.datatables.net/1.10.20/js/jquery.dataTables.min.js">
 </script>
 <script type="text/javascript">
        $(document).ready(function() {
            // On page load: datatable
            var plugins_table=$('.plugins_table').DataTable({
                "ajax":"indexAjax.php?p=listPluginsforSite",
                "columns":[
                    {"data":"plugin_name"},
                    {"data":"plugin_site_version"},
                    {"data":"plugin_uptodate_status"},
                    {"data":"plugin_activate_choice"},
                    {"data":"plugin_install_choice"}
                ],
                "language": {
                processing: "Traitement en cours...",
                search: "Rechercher&nbsp;:",
                lengthMenu: "Afficher _MENU_ Plugins",
                info: "Affichage du Plugin _START_ &agrave; _END_ sur _TOTAL_ ",
                infoEmpty: "Affichage du Plugin 0 &agrave; 0 sur 0 ",
                infoFiltered: "(filtr&eacute; sur _MAX_ Plugins au total)",
                infoPostFix: "",
                loadingRecords: "Chargement en cours...",
                zeroRecords: "Aucun Plugins &agrave; afficher",
                emptyTable: "Aucune donnée disponible dans le tableau",
                paginate: {
                    first: "Premier",
                    previous: " Pr&eacute;c&eacute;dent",
                    next: "Suivant  ",
                    last: "Dernier"
                },
                aria: {
                    sortAscending: ": activer pour trier la colonne par ordre croissant",
                    sortDescending: ": activer pour trier la colonne par ordre décroissant"
                }
            },
                paging: true,
                autoWidth: false,
                responsive: true,
                pagingType: "full_numbers",
            });
        // This event is triggered by a button with class '.activate_state' on each row...
        $('#plugins_table tbody').on('click', '.activate_choice', function () {
            var plugin_id=$(this).data("id") ;
            var plugin_active_state=$(this).data("active-state");
            var request   = $.ajax({
                url:          'indexAjax.php?p=togglePluginActiveState',
                data:         {plugin_id:plugin_id,active_state:plugin_active_state},
                dataType:     'json',
                type:         'post'
            });
            request.done(function(response){
            if (response.result == 'success') {
                // Reload datable: NEITHER commented solutions work !
                //plugins_table.api().ajax.reload();
                //plugins_table.DataTable().ajax.reload();
            }
        });
        });
        });
    </script>

Когда я выполняю «ручную» перезагрузку / обновление sh страницы, таблица / страница обновляется с правильными данными / изменениями, но я не могу получить API для перезагрузки таблицы после успешного вызова ajax. .

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

В первой строке вы используете api(), но это необходимо только в том случае, если вы инициализируете свою таблицу данных с использованием синтаксиса .dataTable() (обратите внимание на маленькое 'd'). Поскольку вы используете синтаксис .DataTable (с заглавной буквой 'D'), вы уже используете API DataTables.

Во второй строке вы пытаетесь повторно инициализировать вашу таблицу данных, но plugins_table уже существует как Таблица данных. Вместо этого refre sh это так:

plugins_table.ajax.reload();
0 голосов
/ 15 апреля 2020

По какой-то причине переименование объекта данных, как показано ниже, работает для меня:

$('.plugins_table').DataTable().ajax.reload();

Вместо предыдущего:

plugins_table.DataTable().ajax.reload();

Где ' plugins_table ' была исходной именованной переменной для таблицы.

Мне было бы интересно объяснить это «поведение ...»!

...