У меня проблема с повторной инициализацией моей таблицы данных. Мой код ниже работает путем извлечения json из getOrderStatus.php, и в случае успеха это помещает все данные json в переменные javascript, а затем из этого я могу установить эти переменные в теги div и отобразить данные, которые мне нужны, на моей веб-странице. Однако Datatable не может быть повторно инициализирован после выполнения цикла ajax и отображения следующего сообщения об ошибке «Предупреждение DataTables: table id = mytable - Cannot reinitialise DataTable». Я считаю, что мне нужен способ убить таблицу и воссоздать ее при обновлении ajax, но я не могу найти способ сделать это?

     $(document).ready(function ajaxLoop(){

      $.ajax({ 

        url: 'getOrderStatus.php',                     // Url of Php file to run sql         
        data: "",                                      
        dataType: 'json',                              //data format      
        success: function updateOrder(data)               //on reciept of reply
        {
          var OrdersSubmitted = data.OrderStatus[0].SUBMITTED;     //get Orders Submitted Count
          var OrdersFulfilled = data.OrderStatus[0].FULFILLED;     //get Orders Fulfilled count
          var LastTransaction = data.LastTransaction[0];           //get Last Transaction


          //--------------------------------------------------------------------
          // 3) Update html content
          //--------------------------------------------------------------------
          $('#OrdersSubmitted').html(OrdersSubmitted);
          $('#OrdersFulfilled').html(OrdersFulfilled); //Set output html divs
          $('#mytable').dataTable({
                  "data": LastTransaction,
                  "aging": false,
                  "searching": false,
                  "columns": [
                      { "title": "ORDER_ID" }, // <-- which values to use inside object
                      { "title": "STATUS" },
                      { "title": "ACC_NUMBER" },
                      { "title": "SORT_CODE" }

                      ]
                    });


        setTimeout(ajaxLoop, 2000);
        } 

      });
    });
0
Adam 15 Авг 2014 в 13:11

1 ответ

Лучший ответ

Вы пробовали использовать "bDestroy": правда.

$('#mytable').dataTable({
                  "data": LastTransaction,
                  "aging": false,
                  "searching": false,
                  "bDestroy": true,
                  "columns": [
                      { "title": "ORDER_ID" }, // <-- which values to use inside object
                      { "title": "STATUS" },
                      { "title": "ACC_NUMBER" },
                      { "title": "SORT_CODE" }

                      ]
                    });

Другой способ - проверить, является ли datatable уже init. на твоем столе

var table = $('#mytable');
if ($.fn.DataTable.fnIsDataTable(table)) {
//It's already a datatable
  //clear and destroy
  table.dataTable().fnClearTable();
  table.dataTable().fnDestroy();

}


**It seems your are using latest datatable version:**

Тогда опция должна быть destroy: true (старение следует изменить на разбиение на страницы):

 $('#mytable').dataTable({
                      "data": LastTransaction,
                      "paging": false,
                      "searching": false,
                      "destroy": true,
                      "columns": [
                          { "title": "ORDER_ID" }, // <-- which values to use inside object
                          { "title": "STATUS" },
                          { "title": "ACC_NUMBER" },
                          { "title": "SORT_CODE" }

                          ]
                        });

И проверка существующей таблицы данных будет:

if($.fn.DataTable.isDataTable("#myTable"))
{
$('#myTable').DataTable().clear().destroy();
}
0
SSA 15 Авг 2014 в 13:25
По-прежнему возникает та же проблема, когда я добавляю "bDestroy": правда, к сожалению
 – 
Adam
15 Авг 2014 в 13:18
Добавил еще один блок кода? какую версию API вы используете?
 – 
SSA
15 Авг 2014 в 13:21