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
Name:
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()
。