javascript - DataTables ajax.reload 在保持分页时跳转到页面底部

标签 javascript jquery ajax datatables

我将 jQuery DataTables 与 ajax 来源的数据一起使用。 我必须每 30 秒更新一次数据而不刷新页面,而 ajax.reload() 就是我需要的函数。

我将 ajax.reload() 放在 setInterval 函数中。

一切正常(如果您停留在第 1 页)。但是当您浏览第 2 页或第 3 页的表格时,当 setInterval 被触发时,它会让您回到第 1 页。

所以... 在此网址上查看文档:http://datatables.net/reference/api/ajax.reload()

如果我将“false”作为第二个参数传递,它会保存当前分页位置,并且分页不会在重新加载时重置。宾果游戏!

有效!但是......我有一个新问题,试图解决一整天,现在我被困住了。这就是我发布这个问题的原因。

它一直在分页,但如果您不在第 1 页,每次触发 ajax.reload() 时,页面都会滚动(直接跳转)到底部。

它非常不友好、不可读、无法使用。 我不知道为什么页面会滚动到底部。

我发布了一个指向我在页面上使用的简单数据表 js 的链接。 jsfiddle

        var url = table.data('url');
        var filterType = table.data('filtertype');

        var options = {
            "ajax": {
                "url": url,
                "type": "GET",
                "data": function (d) {
                    d.contact_type = filterType
                    // this variable will set by server when page load. It should be "lead", "prospect", "client". Leave empty to get all.
                }
            },
            "columns": [
                {"data": "html_is_company"},
                {"data": "name"},
                {"data": "html_type_label"},
                {"data": "created"},
                {"data": "last_update"},
                {"data": "html_actions"},
                {"data": "tsu"},
                {"data": "business_name"}
            ],
            "bLengthChange": false,
            "pageLength": 20,
            "lengthMenu": [[10, 25, 50, 100, -1], [10, 25, 50, 100, "All"]],
            "columnDefs": [
                {
                    "targets": [ 7 ],
                    "visible": false,
                    "searchable": true,
                },
                {
                    "targets": [ 6, 7 ],
                    "searchable": false,
                    "visible": false
                },
                {
                    "targets": [0, 5],
                    "searchable": false,
                    "orderable": false
                },
                {
                    "targets": [ 4 ],
                    "render": function (data, type, row) {
                        return moment(data, IN_DATE_TIME_FORMAT, 'it').fromNow();//.format(DATE_TIME_FORMAT);////;
                    }
                },
                {
                // Sort column 4 (formatted date) by column 6 (hidden seconds)
                    "orderData":[ 6 ],
                    "targets": [ 4 ]
                }],
            "order": [[4, "desc"]],
            "search": "_INPUT_",
            "language": {
                "sSearchPlaceholder": "Cerca...",
                "paginate": {
                    "previous": '<i class="icon wb-chevron-left-mini"></i>',
                    "next": '<i class="icon wb-chevron-right-mini"></i>'
                },
                //"url": "//cdn.datatables.net/plug-ins/1.10.9/i18n/Italian.json"
            }
      };

      var datatable = table.DataTable(options);
      this.setDataTable(datatable);

      setInterval(function(){
        datatable.ajax.reload(null, false);
      }, 5000);

最佳答案

我的解决方案:

"fnDrawCallback": function(data) {
    $(".paginate_button > a").on("focus", function() {
        $(this).blur();
    });
}

关于javascript - DataTables ajax.reload 在保持分页时跳转到页面底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33069472/

相关文章:

javascript - 不区分大小写的 jQuery 属性选择器

javascript - 加载 jquery 后,我无法将图像置于 div 的中心

javascript - 使用 Expressjs 作为跨域 ajax 调用的代理

php - $_POST 值没有通过 jquery ajax 解决?

javascript - PHP AJAX 删除记录 - 删除仅有效 1 次

javascript - Facebook js api : share a post to a friend's wall

javascript - 如何通过将文本与纯 Javascript 匹配来获取选择菜单中选项的索引?

javascript - 如何跟踪缓慢的 JS 或 JQuery 代码

javascript - 默认情况下如何在 Bootstrap 中隐藏侧边栏?

javascript - 如何使用 Google App Script 从电子邮件中提取内联文件/图像?