jQuery DataTables重载间隔错误

我想让我的桌子按时间间隔加载。 我现在收到以下错误:

TypeError: g is null 

用户将输入表单参数,然后单击具有单击事件的提交按钮。 如下:

 $('.searchSubmit').on('click', function() { var data = { searchCriteria: { bill: $('#import_bill').val(), ramp: $('#import_ramp').val(), // few other parameters } }; $.ajax({ url: 'api/railmbs.php', type: 'POST', data: data, dataType: 'html', success: function(data, textStatus, jqXHR) { var jsonObject = $.parseJSON(data); var table = $('#example1').DataTable({ "data": jsonObject, "columns": [ { "data": "BILL" }, { "data": "RAMP" }, // few more columns ], "iDisplayLength": 25, "paging": true, "bDestroy": true, "stateSave": true, "autoWidth": true }); var idle = 0; var idelInterval = setInterval(timer, 10000); $(this).mousemove(function(e){idle = 0;}); $(this).keypress(function(e){idle = 0;}); function timer() { idle = idle + 1; if(idle > 2) { $('#example1').DataTable().ajax.reload(); // <--error occurs here console.log('table reloaded'); } } }, error: function(jqHHR, textStatus, errorThrown) { console.log('fail'); } }); }); 

这是有趣的部分…上面,我指出错误发生的地方,我原来看起来像这样:

 $('#example').DataTable().ajax.reload(); 

请注意,表名是’example’而不是’example1’。 表ID确实是example1,因为我指出了成功函数开始的位置附近。 当我看到重新加载间隔正在查看不同的表ID时,我更改了它,现在导致顶部的错误。

我不认为我应该将ID保留为’示例’,因为这不是正确的ID。

话虽如此,为什么我会收到错误?

我找到了一个似乎可以解决问题的解决方案。 我尽量保持这个尽可能简单,同时仍然使用jQuery和(我认为)解决你遇到的问题。

的index.html

     Ajax Reloader   

AJAX Reloader

Data Reload in: 5

data1.json

 [ {"name": "Rincewind"}, {"name": "Mustrum Ridcully"}, {"name": "Ponder Stibbons"}, {"name": "Gaspode The Wonder Dog"}, {"name": "CMOT Dibbler"}, {"name": "Nanny Ogg"} ] 

data2.json

 [ {"name": "Jason Ogg"}, {"name": "Tiffany Aching"}, {"name": "Rob Anybody"}, {"name": "Mrs. Cake"}, {"name": "Nobby Nobbs"}, {"name": "Fred Colon"} ] 

我的编码风格与你的风格略有不同,但这里应该有相同的基本概念。

希望能帮助到你。 🙂

你期望ajax.reload()如何工作? 没有使用AJAX,因此没有以前的AJAX重新加载。 这样做(原理图):

 var table = $('#example1').DataTable({ ajax: { url: 'api/railmbs.php', data: function() { return { searchCriteria: { bill: $('#import_bill').val(), ramp: $('#import_ramp').val(), // few other parameters } } } }, "columns": [ { "data": "BILL" }, { "data": "RAMP" }, // few more columns ], "iDisplayLength": 25, "paging": true, "bDestroy": true, "stateSave": true, "autoWidth": true }); 

现在,您应该可以从table可用的任何位置使用table.ajax.reload()