2

我在使用 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"
        }
      } );
    });
4

1 回答 1

1

这不是一个直接的答案,但它可能会让您了解如何开始调试。正如 JackPoint 所说,您显然需要安装 Chrome,在其中打开页面并运行开发人员工具,以便您可以检查控制台日志。我在 Chrome 中遇到了相同的症状,并且能够追踪我的错误,所以现在 Datatables 正在工作。我认为 Chrome 对错误非常敏感,如果代码中嵌入了严重错误,整个脆弱的结构就会被破坏。就我而言,我必须深入挖掘才能找到阻碍 Chrome 的原因。我进行 Ajax 调用以获取数据表的数据,然后用该数据填充 Knockout observableArray。在绑定到这个 observableArray 的页面上有一个 HTML 表,因此在 Ajax 返回数据后,它会由 Knockout 自动填充。然后我可以在该表上调用 dataTable() 并像往常一样用可排序的列等进行装饰。但是,我需要在我尝试调用 String.toLowerCase 的 observableArray 中添加一个排序函数,Chrome 认为这是未定义的。控制台提醒我该错误。我发现排序功能导致了这种行为。我首先将其删除,并且确实足够的 Datatables 再次开始工作。然后我又系统地检查了我的排序函数的参数对象(没问题),最后意识到我需要将 String.toLowerCase 更改为 String.prototype.toLowerCase。天知道为什么会这样,但我希望这已经给出了一些关于如何调试这样一个晦涩的问题的想法。我需要在我试图调用 String.toLowerCase 的 observableArray 中添加一个排序函数,Chrome 认为它是未定义的。控制台提醒我该错误。我发现排序功能导致了这种行为。我首先将其删除,并且确实足够的 Datatables 再次开始工作。然后我又系统地检查了我的排序函数的参数对象(没问题),最后意识到我需要将 String.toLowerCase 更改为 String.prototype.toLowerCase。天知道为什么会这样,但我希望这已经给出了一些关于如何调试这样一个晦涩的问题的想法。我需要在我试图调用 String.toLowerCase 的 observableArray 中添加一个排序函数,Chrome 认为它是未定义的。控制台提醒我该错误。我发现排序功能导致了这种行为。我首先将其删除,并且确实足够的 Datatables 再次开始工作。然后我又系统地检查了我的排序函数的参数对象(没问题),最后意识到我需要将 String.toLowerCase 更改为 String.prototype.toLowerCase。天知道为什么会这样,但我希望这已经给出了一些关于如何调试这样一个晦涩的问题的想法。然后我又系统地检查了我的排序函数的参数对象(没问题),最后意识到我需要将 String.toLowerCase 更改为 String.prototype.toLowerCase。天知道为什么会这样,但我希望这已经给出了一些关于如何调试这样一个晦涩的问题的想法。然后我又系统地检查了我的排序函数的参数对象(没问题),最后意识到我需要将 String.toLowerCase 更改为 String.prototype.toLowerCase。天知道为什么会这样,但我希望这已经给出了一些关于如何调试这样一个晦涩的问题的想法。

于 2014-05-12T23:07:22.890 回答