jquery 在dataTable()中获取 AJAX 响应

oxalkeyp  于 2022-12-12  发布在  jQuery
关注(0)|答案(2)|浏览(197)

这是我现有的分页代码,我在这里得到错误,因为roleList没有定义。
我不知道如何在dataTable()里面使用 AJAX 响应。我做错了什么?我被这个部分击中了过去3天,但是我寻找了很长时间的解决方案,但不能找到一个。

function empRoles() {debugger
    table = $('#mydata').DataTable({
        "ajax": {
            "type": 'POST',
            "dataType": 'json',
            "url": '/Admin/getRolesList',
            "dataSrc": function (response) {
                var roleList = response;
                console.log(roleList)
            },
            "data": {
                "json": JSON.stringify(roleList)
            }

        },
        "columns": [{
            "data": "sNo"
        }, { 
            "data": "roleName",
            "className": "roleName"
        }, {
            "data": "roleName",
            "render": (data, type, row, meta) => `
                <button class="btn edit btn-info" id="edit${row.sNo}">
                    <i class="fa fa-pencil"></i>
                    Edit
                </button>
                <button class="btn update btn-success" id="update${row.sNo}">
                    <i class="fa fa-floppy-o"></i>
                    Update
                </button>
                <button class="btn dlt btn-danger" data-toggle="modal" data-target="#confirm" id="delete${row.sNo}">
                    <i class="fa fa-trash-o"></i>
                    Delete
                </button>
            `
            ,
            "sortable": false
        }],
        "createdRow": (row, data, dataIndex) => {
            $(row).attr("id", "row" + data.sNo);
            $('td:eq(1)', row).attr("id", "name" + data.sNo);
        }
    });
}

有什么建议吗?

xnifntxz

xnifntxz1#

如果我正确地理解了这个问题,我相信最简单的解决方案是在选项之外初始化roleList变量。

function empRoles() {
    var roleList = []; // or whatever the initial data value should be
    var table = $('#mydata').DataTable({ 
    // ...
       "dataSrc": function (response) {
            roleList = response;
            console.log(roleList)
        },
        "data": {
            "json": JSON.stringify(roleList)
        }
    // ...
ttp71kqs

ttp71kqs2#

代码部分

"data": {
            "json": JSON.stringify(roleList)
        }

之前执行

"dataSrc": function (response) {
            roleList = response;
            console.log(roleList)
        }

因此,变量roleList对于ajax.data不可用。
您可以通过在浏览器上设置断点来验证这一点。
这里你基本上是尝试访问输入变量并将其传递回服务器。同样的事情可以通过自己的自定义 AJAX 部分使用下面链接中提到的函数来实现-
https://datatables.net/reference/option/ajax

相关问题