在dataTable()中获取ajax响应

问题描述 投票:0回答:2

这是我现有的分页代码,我收到错误,因为

roleList
未定义。
我不知道如何在
dataTable()
内部使用ajax响应。我做错了什么? 我在过去的三天里对这个部分感到震惊,但是我寻找了很长时间的解决方案,但无法解决。

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);
        }
    });
}

有什么建议请..

jquery ajax
2个回答
0
投票

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

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)
        }
    // ...

0
投票

代码部分

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

之前执行
"dataSrc": function (response) {
            roleList = response;
            console.log(roleList)
        }

因此,变量roleList不可用于ajax.data。

您可以通过在浏览器上放置断点来验证这一点。

在这里,您基本上是在尝试访问输入变量并将其传递回服务器。使用此链接中提到的函数,可以通过自己的自定义 ajax 部分来实现相同的效果 -

https://datatables.net/reference/option/ajax

© www.soinside.com 2019 - 2024. All rights reserved.