Переинициализация DataTable

Я работаю с одним Datatable() который дает мне проблемы во время повторно включения этого, уже я протестировал различные методы и они не дали мне произошедшему.

Вопрос состоит, в том, что сайт, загрузив это впервые, загружает меня DataTable() без какой-либо проблемы.

DataTable Главный:

var dt = $('#traslados').DataTable({
            "order": [[0, "desc"]],
            'ajax': "",
            bAutoWidth: false,
            "lengthChange": false,
            "searching": false,
            "columns": [
                {"data": "ides"},
                {"data": "Status"},
                {"data": "Folio"},
                {"data": "Fecha"},
                {"data": "Nombre"},
            ]
        });

Я делаю вид фильтра посредством одного select и один boton:

И в момент, который реализует один clic entonce переходят, чтобы разрушать DataTable и чтобы инициализировать нового:

$('#creafiltro').click(function () {
            dt.clear().destroy();
            dt = $('#traslados').DataTable({
                "order": [[0, "desc"]],
                'ajax': "" + $('#filtro_estatus').val(),
                bAutoWidth: false,
                serverSide: true,
                "lengthChange": false,
                "searching": false,
                "columns": [
                    {"data": "ides"},
                    {"data": "Status"},
                    {"data": "Folio"},
                    {"data": "Fecha"},
                    {"data": "Nombre"},
                ],
            });
        });

Если он удаляет меня DataTable() существующий, но меня инициализирует новый, не загружая данных и не потому что.

Я делал доказательства посредством getJSON чтобы видеть, что мои данные возвращались правильным способом, и если без проблемы они возвращаются.

$.getJSON('' + $('#filtro_estatus').val(),
                function (data) {
                    console.log($data);
                });

Пример: Я выбираю value 8 select и я оказываю давление на него в Filtrar и getJSON меня возвращает следующее:

Dump => array(1) {
  ["data"] => array(3) {
    [0] => array(7) {
      ["ides"] => string(2) "85"
      ["Folio"] => string(4) "1234"
      ["Fecha"] => string(19) "19-03-2019 10:18 AM"
      ["id"] => string(1) "8"
      ["Status"] => string(11) "En Traslado"
      ["Nombre"] => string(7) "Eduardo"
      ["Sucursal"] => string(14) "Mario Talavera"
    }
    [3] => array(7) {
      ["ides"] => string(2) "11"
      ["Folio"] => string(4) "1411"
      ["Fecha"] => string(19) "14-03-2019 06:10 PM"
      ["id"] => string(1) "8"
      ["Status"] => string(11) "En Traslado"
      ["Nombre"] => string(5) "Allan"
      ["Sucursal"] => string(14) "Mario Talavera"
    }
    [4] => array(7) {
      ["ides"] => string(2) "42"
      ["Folio"] => string(4) "1412"
      ["Fecha"] => string(19) "15-03-2019 06:32 PM"
      ["id"] => string(1) "8"
      ["Status"] => string(11) "En Traslado"
      ["Nombre"] => string(9) "Asistente"
      ["Sucursal"] => string(14) "Mario Talavera"
    }
  }
}

Это, потому что array что возврат $data['data']:

$data['data'] = $this->Inicio_model->obtenerTrasladosf($id_sucursal, $_REQUEST['folio']);
echo json_encode($data);

Но сама url что у него есть getJSON я применяю ее к нему в ajax DataTable и оно я не функционирует.

introducir la descripción de la imagen aquí

Нужно упоминать о том, что уже эх протестированный с этим:

if($.fn.DataTable.isDataTable('#traslados')) {
    dt.clear().destroy();
}

и с этим:

$('#teamTable').dataTable().fnDestroy();
$('#teamTable').dataTable();

И какие-то другие, которые не эх добитый, чтобы они функционировали. Вопрос - в инициализации DataTable потому что данные esta возвращаясь хорошо.

1
задан 20.03.2019, 00:54
1 ответ

Реализовывая одну investigaciГіn больше в глубине наконец скажи с нею soluciГіn и состой в том, чтобы добавлять bDestroy: true к DataTable(), разрушать это с $("#traslados").dataTable().fnDestroy(); и инициализировать это с DataTable() и не с dataTable():

$('#traslados').DataTable({
    "order": [[0, "desc"]],
    'ajax': "<? echo base_url('Inicio/obtenerTraslados'); ?>",
    bDestroy: true,
    bAutoWidth: false,
    "lengthChange": false,
    "searching": false,
    "columnDefs": [
        {
            "targets": [0],
            "visible": false,
            "searchable": false
        }
    ],
    "columns": [
        {"data": "ides"},
        {"data": "Status"},
        {"data": "Folio"},
        {"data": "Fecha"},
        {"data": "Nombre"},
    ]
});

и она acciГіn, сделав clic, я остаюсь следующего способа:

$('#creafiltro').click(function () {
    $("#traslados").dataTable().fnDestroy();
    $('#traslados').DataTable({
        "order": [[0, "desc"]],
        'ajax': "<?= base_url('Inicio/obtenerTrasladosf?folio=')?>" + $('#filtro_estatus').val(),
        bDestroy: true,
        bAutoWidth: false,
        "lengthChange": false,
        "searching": false,
        "paging": false,
        "info": false,
        "columnDefs": [
            {
                "targets": [0],
                "visible": false,
                "searchable": false
            }
        ],
        "columns": [
            {"data": "ides"},
            {"data": "Status"},
            {"data": "Folio"},
            {"data": "Fecha"},
            {"data": "Nombre"},
        ],
    });
});

Снабжает ссылками: https://stackoverflow.com / questions / 24452270/how-to-reinitialize-datatable-in-ajax

1
ответ дан 02.12.2019, 05:27