我遇到了Datatables的问题,我对如何修复它没有任何线索。
我在自定义cms中使用Datatables,一切都在我的Mac上运行(Safari,Chrome,Firefox)。还有我的同事一切正常(Windows)。
但我们有一个客户(可能不仅仅是一个),Datatables没有显示任何内容。我收到了客户的截图,其中只有标题可见。数据表没有显示任何内容,也没有显示“没有找到记录”。此客户在Windows计算机上的Google Chrome版本28.0.1500.95中遇到此问题。当客户打开Internet Explorer时,一切正常。
我无法重现这个问题,所以我希望你们能帮助我。 也许这是一个更常见的问题?或者客户端是否有可能在他的电脑上有什么东西,导致Datatables无法正常工作的原因是什么?客户端未禁用Javascript,因此cms会显示一条消息,并且该消息在屏幕截图中不可见。
这是我对此表的JS:
$(document).ready( function() {
$('#applicationsTable').dataTable( {
"aaSorting": [[4,"desc"]],
"bPaginate": true,
"iDisplayLength": 50,
"bFilter": true,
"oLanguage": {
"oPaginate": {
"sPrevious": "Vorige",
"sNext": "Volgende",
},
"sSearch": "Zoeken:",
"sInfo": "Toont _START_ t/m _END_ van de _TOTAL_ sollicitaties.",
"sLengthMenu": "Toon _MENU_ sollicitaties"
}
} );
});
答案 0 :(得分:1)
这不是一个直接的答案,但它可能会让您知道如何开始调试。正如JackPoint所说,你显然需要安装Chrome,打开那里运行Developer Tools的页面,以便检查控制台日志。我在Chrome中遇到了相同的症状,并且能够追踪我的错误,所以现在Datatables正在运行。我认为Chrome对错误非常敏感,如果代码中嵌入了严重错误,整个脆弱的结构就会被破坏。在我的情况下,我不得不深挖以找到绊倒Chrome的原因。我进行Ajax调用以获取数据表的数据,然后使用该数据填充Knockout observableArray。页面上有一个绑定到此observableArray的HTML表,因此在Ajax返回数据后,它会被Knockout自动填充。然后,我可以在该表上调用dataTable(),并像往常一样使用可排序列等进行装饰。但是,我需要在我的observableArray中添加一个sort函数,我在其中尝试调用String.toLowerCase,Chrome认为这是未定义的。控制台提醒我错误。我发现sort函数导致了这种行为。我首先删除了它,确定数据表再次开始工作。然后我回去系统地检查了我的sort函数的arguments对象(没问题),最后意识到我需要将String.toLowerCase更改为String.prototype.toLowerCase。天知道为什么会发生这种情况,但我希望这已经提供了一些关于如何调试这样一个模糊问题的想法。