javascript - jquery 数据表操作导致整个页面重新加载

标签 javascript jquery datatables

我有一个 jQuery 数据表,最初使用 ajax 调用填充,当我单击表上的任何位置(如分页编号或显示长度下拉列表)时,整个页面将无限期地重新加载。这是我填充数据表的方法。

let table = $('#data-table').DataTable();
function populateTable(){

   table = $('#data-table').DataTable({
            destroy: true,
            responsive: true,
            serverSide: false,
            autoWidth: false,
            paging: true,
            filter: true,
            searching: true,
            stateSave: true,
            scrollX: true,
            lengthMenu: [10, 25, 50, 75, 100],
            language: {
                "search": "Filtrer: "
            },
            ajax: {
                url: '/Observer/GetActiveClientsByFloor',
                type: 'POST',
                data: {
                    FloorId: floorId,
                    Type: type
                },
                dataSrc: ''
            },
            columns: [
                {
                    title: 'Zone',
                    data: 'LastKnownZone',
                },
                {
                    title: 'Hiérarchie Map',
                    data: 'MapInfo.mapHierarchyString',
                },
                {
                    title: 'Addresse MAC',
                    data: 'macAddress',
                },
                {
                    title: 'SSID',
                    data: 'ssId',
                },
            ],
            createdRow: (row, data, dataIndex, cells) => {

                const selectedRowProfileId = $('#selectedRowProfileId', window.parent.document).val();

                if (selectedRowProfileId !== '') {

                    if (data['ProfileId'] === selectedRowProfileId) {

                        $(row).addClass('selectedCustom');
                    }

                }
            },

            initComplete: function (settings, json)
            {
                const response = json;

                 //Show the respone on other part of the page
            }
      }).order([[1, 'asc']]).draw(false);
}

我想知道什么可能导致页面重新加载,并且还知道如何使分页正常工作。

enter image description here

最佳答案

表格初始化后不需要调用order([[1, 'asc']]).draw(false),只需添加

order: [[1, 'asc']]

到你的表属性,像这样

$(document).ready(function(){
    let table = $('#data-table').DataTable({
                order: [[1, 'asc']],
                //Other properties
});

由于您没有使用服务器端,当您单击分页按钮时,考虑到所有数据已在第一个Ajax调用中加载,DataTables将自动进行分页,但是,当 serverSide 设置为 true 时,每次更改分页时,数据表都会发送新的 Ajax 调用,为 发送附加参数分页排序等,您需要更改后端查询过滤器分页逻辑基于该参数。

编辑: 您的情况也不需要 destroy: true ,如 Documentation说: “销毁与选择器匹配的任何现有表并替换为新选项。” 您不会重新创建或替换表格,因此只需将其删除即可

关于javascript - jquery 数据表操作导致整个页面重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58017467/

相关文章:

javascript - Jquery悬停并隐藏另一个div

javascript - 为什么 SP.js 没有加载?

jquery - 如何根据成功处理程序中的返回值隐藏按钮?

javascript - 如何从 codeigniter View 将数组传递给 jquery 脚本

javascript - 如何为具有多个 y 轴的多线图表中的每一行分配特定 id

javascript - 打印每页的销售数量而不是总销售数量

javascript - jQuery mouseenter 适用于表数据,但不适用于整个表行

javascript - 将具有相同类名的表单输入字段放入数组中

asp.net-mvc - 在mRender中获取单元格值

jquery - 将复选框添加到 jquery 数据表