Перезагрузка DataTable с новыми данными JSON не работает

#javascript #html #jquery #ajax #datatables

#javascript #HTML #jquery #ajax #таблицы данных

Вопрос:

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

Мой код:

           $('#pending-appointments-daterange').daterangepicker({
              opens: 'right', 
              showWeekNumbers: true
            }, function(start, end, label) {

              $.ajax({
                type: "GET",
                url: '/get_pending_appointments',
                data: {
                  from: start.format('YYYY-MM-DD'),
                  to: end.format('YYYY-MM-DD')
                }
              })
              .done(function(res) {
                //$('#pending-appointments-datatable').DataTable().destroy();
                //$('#pending-appointments-datatable').DataTable().clear()
                //$('#pending-appointments-datatable').DataTable().ajax.json() = res.dataTableData
                //$('#pending-appointments-datatable').DataTable().clear().draw();
                //$('#pending-appointments-datatable').DataTable().draw();

               $('#pending-appointments-datatable').DataTable().clear().draw();

                //console.log(res)
                //$('#pending-appointments-datatable').url(res).load();
                //$('#pending-appointments-datatable').DataTable().ajax.reload();
              })
              .fail(function(err) {
                console.log(err)
              });

            }); 

Как я могу перезагрузить datatable с отфильтрованными данными? пожалуйста, помогите мне. Спасибо.

Ответ №1:

Вы должны очистить существующие строки, а затем снова добавить строки, если res — это ваш массив элементов.

           $('#pending-appointments-daterange').daterangepicker({
              opens: 'right', 
              showWeekNumbers: true
            }, function(start, end, label) {

              $.ajax({
                type: "GET",
                url: '/get_pending_appointments',
                data: {
                  from: start.format('YYYY-MM-DD'),
                  to: end.format('YYYY-MM-DD')
                }
              })
              .done(function(res) {

                $('#pending-appointments-datatable').DataTable().clear();
                $('#pending-appointments-datatable').DataTable().rows.add(res);
                $('#pending-appointments-datatable').DataTable().draw();

                //console.log(res)
                //$('#pending-appointments-datatable').url(res).load();
                //$('#pending-appointments-datatable').DataTable().ajax.reload();
              })
              .fail(function(err) {
                console.log(err)
              });

            }); 

Комментарии:

1. я получаю JSON как res из серверной части, как я могу преобразовать в массив?

2. пожалуйста, приведите пример