2017-04-14 139 views
0

我有一个jQuery数据表正在使用并试图通过间隔重新加载数据。我不能成功,但是这个代码是正确的吗?JQuery Datatable不会间隔重新加载

(document).ready(function() { 
    $.ajax({ 
     url: "./includes/processing.php", 
     method: "POST", 
     dataType:'json', 
     "contentType": "application/json; charset=utf-8", 
     success: function(data) { 
      $('#DTResTableList_1').dataTable({ 
       data: data, 
       'paging': false, 
       'scrollY': 400, 
       'select': true, 
       columns:[ 
        {'data' : 'col0'}, 
        {'data' : 'col1'}, 
        {'data' : 'col2'}, 
        {'data' : 'col3'}, 
        {'data' : 'col4'}, 
        {'data' : 'col5'} 
       ] 
      }); 
     }, 
     error: function(data) { 
      console.log(data); 
     } 
    }); 
    setInterval(function() { 
     table.ajax.reload(); 
}, 1000); 
}); 

试图单独构建它,但这不会让内容自动加载。

使用此代码解决;

$(document).ready(function() { 
    $('#DTResTableList_1').DataTable({ 
     "ajax": { 
      url: './includes/processing.php', 
      method: 'POST', 
      dataType:'json', 
      contentType: 'application/json; charset=utf-8', 
      dataSrc: ""}, 
      paging:  false, 
      scrollY: 400, 
      select:  true, 
     'columns': [ 
      {'data' : 'col0'}, 
      {'data' : 'col1'}, 
      {'data' : 'col2'}, 
      {'data' : 'col3'}, 
      {'data' : 'col4'}, 
      {'data' : 'col5'} 
     ] 
    }); 
    setInterval(function() { 
    $('#DTResTableList_1').DataTable().ajax.reload(null, false); // user paging is not reset on reload 
}, 5000); 
}); 

回答

1

请改用下面的代码。

我建议在成功DataTables初始化后立即调用setInterval否则会出现竞速状况。

$(document).ready(function() { 
    var table = $('#DTResTableList_1').DataTable({    
     'ajax': { 
      'url': "./includes/processing.php", 
      'method': "POST", 
      'dataType': 'json', 
      'contentType': "application/json; charset=utf-8" 
     }, 
     'initComplete': function(settings){ 
      var api = new $.fn.dataTable.Api(settings); 

      setInterval(function() { 
       api.ajax.reload(); 
      }, 1000); 
     }, 
     'paging': false, 
     'scrollY': 400, 
     'select': true, 
     'columns': [ 
      {'data' : 'col0'}, 
      {'data' : 'col1'}, 
      {'data' : 'col2'}, 
      {'data' : 'col3'}, 
      {'data' : 'col4'}, 
      {'data' : 'col5'} 
     ] 
    }); 
}); 
+0

,这将引发一个“遗漏的类型错误:不能设置为空的特性‘数据’” – Cyber

+1

'重装()'只适用于一个ajaxed dataTable的,但另有约定。这个问题实际上是在文档 - > https://datatables.net/reference/api/ajax.reload() – davidkonrad

+0

@davidkonrad,你是对的,OP使用'ajax()',然后将数据提供给DataTables ,根据您的评论简化了代码。 –