Как обновить sh таблицы данных после ответа ajax - PullRequest
0 голосов
/ 14 января 2020

У меня проблема, здесь я автоматически нажимаю кнопку при перезагрузке страницы и отправляю ajax, после того как я смог ответить, это создаст таблицы данных. проблема заключается в том, что когда пользователь снова нажимает кнопку «получить данные», возникает ошибка DataTables warning: table id = tAccount - Cannot reinitialise DataTable. этот мой сценарий

 setTimeout(function() {
        $("#get_data").trigger('click');
    },10);

$("#get_data").click(function(){
    var url = "{{route('get-some-data')}}"
    // $('#getData').DataTable().clear().destroy();
        $.ajax({
            type: "get",
            url: url, 
            dataType: "json",
            success:function(data){
            Swal.fire({
                type: 'success',
                title: 'Has been Updated',
                text: data.message.id,
            }).then(function() {
                var VendorClient = $("#tAccount").DataTable({
                lengthMenu: [[10, 25, 50, -1], [10, 25, 50, "All"]],
                processing: true,
                serverSide: false,
                ajax: "{{route('some-url-response')}}",
                columns: [
                {
                    data: "fullname",
                    name: "fullname",
                    orderable:false
                },
                {
                    data: "name",
                    name: "name",
                    orderable:false
                },
                {
                    data: "month",
                    name: "month",
                    orderable:false
                }
                ]
            });
            });  
            }
        });
});

время первого щелчка при перезагрузке страницы таблиц данных отображается успешно, но при втором щелкните после создания таблицы данных, это приведет к ошибке

1 Ответ

1 голос
/ 14 января 2020

Вместо использования jQuery Ajax для заполнения таблицы данных, почему бы вам не использовать встроенную функцию Ajax? Это намного проще. Следуйте этому примеру для определения вашей DataTable , затем, когда вы захотите перезагрузить внутри обработчика нажатия кнопки, сделайте:

VendorClient.ajax.reload();

Или, если вы хотите изменить URL или параметры поиска, сделайте:

VendorClient.ajax.url('new-url-here').load();

Если у вас есть варианты, которые вы хотите отправить с помощью ajax URL, вы можете определить его как объект .

Делая это таким образом, вы не не возникает проблем с повторным созданием вашей таблицы данных каждый раз.

...