【问题标题】:jQuery Datatables resume after AJAX call completedAJAX 调用完成后 jQuery 数据表恢复
【发布时间】:2023-03-24 12:18:01
【问题描述】:

我正在使用 jQuery 的 Datatables 插件,我正在尝试弄清楚如何在 AJAX 调用成功后恢复脚本。

我当前的代码是:

var table = $("#dataTables-example").DataTable(
        {
            ajax: {
                url: "/kleurmixer/hmi/view_json2.php?type=2",
                dataSrc: '',
            },
            "aoColumnDefs": [
                { 'bSortable': false, 'aTargets': [ 7 ] },
                { 'bSortable': false, 'aTargets': [ 8 ] }
            ]
        }
);

现在,在 Chrome 和 FF 中它可以工作了。但由于这是为 WinCC(使用 IE7)制作的页面,所以它不起作用。所以我的 AJAX 调用需要某种回调函数,但我不知道该怎么做。

我们将不胜感激,

谢谢,

【问题讨论】:

  • 它在IE7中不起作用,因为结尾有逗号dataSrc: '',←
  • 去掉那个逗号后,还是不行。它仍然显示正在加载...
  • 也是在用 ctrl-F5 刷新之后(我相信是这样)?尾随逗号是 IE7 杀手 :(
  • 我正在使用 WinCC,因为它用于控制硬件,这使得它有点困难(没有 Ctrl + F5)。即使我完全重新启动程序,它也不会工作。

标签: javascript jquery ajax datatables


【解决方案1】:

您可以像这样为done 或success 创建回调。如果需要,您还可以添加 error 和 statusCode。

var table = $("#dataTables-example").DataTable(
    {
        ajax: {
            url: "/kleurmixer/hmi/view_json2.php?type=2",
            dataSrc: '',
            "done": function(){
                alert('done');
            }
        },
        "aoColumnDefs": [
            { 'bSortable': false, 'aTargets': [ 7 ] },
            { 'bSortable': false, 'aTargets': [ 8 ] }
        ]
    }
);

更新 1:另一种数据表方法

$("#dataTables-example").dataTable( {
    "initComplete": function(settings, json) {
      alert( 'DataTables has finished its initialisation.' );
    }
} );

Documentation for Datatables initComplete

【讨论】:

  • 感谢您的回复,但添加并不会提醒我完成,即使表格已正确加载(在 Chrome 中)。
  • 尝试添加成功、错误和状态代码以获取更多信息。也许您也可以根据要求在开发者工具中发现一些东西
  • IE7 没有这些工具。在其中添加成功并带有警报也不起作用,因为它会在实际加载表之前返回警报。
  • 我的 update1 呢?你能通过监听 Datatables 触发的事件来修复它吗? :)
  • 我找出了问题的哪一部分。如果我在创建表后添加警报,它确实可以正常工作。经过一番谷歌搜索,这是因为 AJAX 是异步的,并且警报提供了足够的延迟让它等待 AJAX 响应并将其放入表中。您碰巧知道任何解决方法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-17
  • 1970-01-01
  • 2011-04-26
  • 1970-01-01
  • 2020-01-31
相关资源
最近更新 更多