Datables re-write

Просьба, подсказать, как реализовать перезапись таблицы, на данный момент таблица формируется следующим образом:

$('#list_stp tbody').on('click', '.shark', function(){
    var name_file = $(this).closest('.shark').attr('data-text');
    $('#table_of_pcap').DataTable({
        'processing': true,
        'serverSide': true,
        'serverMethod': 'post',
            'ajax': {
                'url':'/dash/read_pcap',
                data: {name_file: name_file}
            },
            'lengthMenu': [[10, 25, 50], [10, 25, 50]],
            searching: false,
            sort: false,
            'columns': [
                { data: 'packet_number' },
                { data: 'time' },
                { data: 'source' },
                { data: 'destination' },
                { data: 'protocol' },

        ]

    });
});

соответветно при клике по .shark формирую таблицу, при свитче(попытки открыть другую таблицу) перезаписать текущую, возвращается ошибка Cannot reinitialise DataTable. пробовал retrieve и destroy ошибку не решило


Ответы (1 шт):

Автор решения: InDevX

Когда инициализируете таблицу, можно добавить параметр, условно, name_file (ну и на серверной части смотреть значение name_file), и передавать данные через скрытое поле (не помню, с переменной это работает или нет - можете попробовать), пр. <input type="hidden" id="name_file" value="" /> - изначально оно пустое

$('#table_of_pcap').DataTable({
  ...
  'ajax': {
    'url': '/dash/read_pcap',
    'type': "POST",
    'data': function ( d ) {
      d.name_file = $('#name_file').val(); // берём значение скрытого поля
    }
  },
  ...
});

p.s. удалил лишний код чтоб не занимал место

По нажатию на "shark" - записывать значение в скрытый input и перезагружать таблицу

$('#list_stp tbody').on('click', '.shark', function(){
  var name_file = $(this).closest('.shark').attr('data-text');
  $('#name_file').val(name_file); // записываем значение в скрытый инпут
  $('#table_of_pcap').DataTable().ajax.reload(); // перезагружаем таблицу
});

Если "нужно" после перезагрузки очищать выбранное значение то можно очищать значение на drow событии таблицы или после перезагрузки таблицы

→ Ссылка