在dataTable()

时间:2017-03-26 04:38:16

标签: jquery ajax

这是我现有的分页代码,因为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);
        }
    });
}

请提出任何建议..

2 个答案:

答案 0 :(得分: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)
        }
    // ...

答案 1 :(得分:0)

代码部分

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

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

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

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

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

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