Javascript DataTables:fnGetData切换到服务器端处理后不工作

Javascript DataTables:fnGetData切换到服务器端处理后不工作,javascript,jquery,datatables,Javascript,Jquery,Datatables,我已经在DataTables(版本1.10)中从客户端处理切换到服务器端处理,以提高性能(在“dom”下面添加行)。 DataTables本身按预期工作,但从那时起,我在从单个行或单元格获取数据时遇到了问题 var tableDT = $('#tblReport').dataTable({ dom: 'Bfrtip', "bProcessing": true, "bServerSide": true, "sAjax

我已经在DataTables(版本1.10)中从客户端处理切换到服务器端处理,以提高性能(在“dom”下面添加行)。
DataTables本身按预期工作,但从那时起,我在从单个行或单元格获取数据时遇到了问题

var tableDT = $('#tblReport').dataTable({
    dom: 'Bfrtip',
    "bProcessing": true,
    "bServerSide": true,
    "sAjaxSource": "data.php",
    "aoColumns": aoCols,
    // ...
在此之前,我使用“fngedata”用于此目的,如下面的示例中所示,它对我来说效果很好,但现在它返回未定义的(我没有得到错误)。
在使用服务器端处理或我现在必须更改的任何内容时,是否有其他方法可以做到这一点

$(document).on('click', '.showPrinters', function(e) {
    e.preventDefault();                         
    currentRow = $(this).closest('tr');             
    var itemId = $('#tblReport').dataTable().fnGetData(currentRow)[0]; // this should return the text of the first td (in my case it is hidden by default)
    // ...  
我希望有人能帮我


谢谢,Tom

您好,如果您从Datatable获取数据,您可以通过0索引唯一值获取行alldataby 如果数据匹配

如果您的datatble var=tableDT

var indexes = **tableDT**.rows().eq(0).filter(function (rowIdx) {
    return **tableDT**.cell(rowIdx, 0).data() == id ? true : false;
});

var row = view_table.rows(indexes)
        .nodes();
//在这里您将获得所有数据的行
tableDT.rows(index.data()[0]

嗨,如果从Datatable获取数据,则可以通过0索引唯一值获取行alldataby 如果数据匹配

如果您的datatble var=tableDT

var indexes = **tableDT**.rows().eq(0).filter(function (rowIdx) {
    return **tableDT**.cell(rowIdx, 0).data() == id ? true : false;
});

var row = view_table.rows(indexes)
        .nodes();
//在这里您将获得所有数据的行
tableDT.rows(index.data()[0]

我在驱动器中共享文件[https://drive.google.com/file/d/1Iv8Bq1iDGZVW2B82NSP-WqNG6O6brq57/view?usp=sharing][1] 服务器文件和html

<html>
    <head>
        <title>Test APP</title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
        <script src="//cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js">
        </script>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="//cdn.datatables.net/1.10.22/css/jquery.dataTables.min.css" />
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css"/>     
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>

        <h2>Click on the Edit Icon</h2>
        <table id="view_table" class="display" style="width:100%">
            <thead>
                <tr>
                    <th></th>
                    <th>First name</th>
                    <th>Last name</th>
                    <th>Edit</th>
                </tr>
            </thead>

        </table>
        <br>
        <div  id="console" style="height:270px; border: 1px dashed #ccc;"></div>
    </body>

    <script type="text/javascript">

        var view_table;
        $(function () {
            initTable();
        });

        function initTable() {

            var action_init = "get_data";

            view_table = $('#view_table').DataTable({

                "ajax": {
                    "url": "server.php",
                    "type": "POST",
                    data: {
                        action: action_init
                    }

                }, responsive: true,
                "processing": true,
                "serverSide": true,
                "columns": [

                    {"data": "id"},
                    {"data": "fname"},
                    {"data": "lname"},
                    {"data": ""},
                ],
                "columnDefs": [
                    {"width": "20px", "targets": [0]},
                    {className: "center-text ", "targets": [2]},
                    {
                        "targets": [0, 1, 2],
                        "orderable": false,
                    },
                    {
                        "targets": [0],
                        "visible": false,
                    },

                    {

                        "render": function (data, type, row) {

                            return '<i class="fa fa-edit edit_item" access="edit"   data-id="' + row["id"] + '" ></i>';
                        },
                        "targets": 3
                    },
                ],
                "order": [[0, "ASC"]]

            });
        }


        //HERE WE GET DATA WHEN CLICK EDIT BTN

        //edit_item LINE 77 CLASS edit_item
        $(document).on("click", ".edit_item", function () {

            var id = ($(this).data("id"));

            if ($(this).hasClass("edit_item")) {
                $("#console").text( );
                $("#console").html("You can parse the <b>getDTRow(id)</b>  AS JSON TO GET DATA <br> <br>" + JSON.stringify(getDTRow(id)));
            }
        });




        function getDTRow(id) {
            var indexes = view_table.rows().eq(0).filter(function (rowIdx) {
                // console.log(rowIdx)
                return view_table.cell(rowIdx, 0).data() == id ? true : false;
            });

            var row = view_table.rows(indexes)
                    .nodes();
            return view_table.rows(indexes).data()[0];

        }

    </script>

</html>

测试应用程序
单击编辑图标
名字
姓
编辑

var视图_表; $(函数(){ initTable(); }); 函数initTable(){ var action_init=“获取数据”; view_table=$('#view_table')。数据表({ “ajax”:{ “url”:“server.php”, “类型”:“职位”, 数据:{ 动作:动作_init } },回答:是的, “处理”:对, “服务器端”:正确, “栏目”:[ {“数据”:“id”}, {“数据”:“fname”}, {“数据”:“lname”}, {“数据”:“}, ], “columnDefs”:[ {“宽度”:“20px”,“目标”:[0]}, {className:“中心文本”,“目标”:[2]}, { “目标”:[0,1,2], “可订购”:错误, }, { “目标”:[0], “可见”:假, }, { “渲染”:函数(数据、类型、行){ 返回“”; }, “目标”:3 }, ], “订单”:[[0,“ASC”]] }); } //在这里,我们得到数据时,点击编辑BTN //编辑项目行77类编辑项目 $(文档)。在(“单击“,”上。编辑项目”,函数(){ var id=($(this.data(“id”)); if($(this).hasClass(“编辑项”)){ $(“#控制台”).text(); $(“#控制台”).html(“您可以将getDTRow(id)解析为JSON以获取数据

”+JSON.stringify(getDTRow(id)); } }); 函数getDTRow(id){ var index=view_table.rows().eq(0).filter(函数(rowIdx){ //console.log(rowIdx) 返回视图_table.cell(rowIdx,0).data()==id?true:false; }); var row=查看表格行(索引) .nodes(); 返回视图_table.rows(index.data()[0]; }
我在驱动器中共享文件[https://drive.google.com/file/d/1Iv8Bq1iDGZVW2B82NSP-WqNG6O6brq57/view?usp=sharing][1] 服务器文件和html

<html>
    <head>
        <title>Test APP</title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
        <script src="//cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js">
        </script>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="//cdn.datatables.net/1.10.22/css/jquery.dataTables.min.css" />
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css"/>     
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>

        <h2>Click on the Edit Icon</h2>
        <table id="view_table" class="display" style="width:100%">
            <thead>
                <tr>
                    <th></th>
                    <th>First name</th>
                    <th>Last name</th>
                    <th>Edit</th>
                </tr>
            </thead>

        </table>
        <br>
        <div  id="console" style="height:270px; border: 1px dashed #ccc;"></div>
    </body>

    <script type="text/javascript">

        var view_table;
        $(function () {
            initTable();
        });

        function initTable() {

            var action_init = "get_data";

            view_table = $('#view_table').DataTable({

                "ajax": {
                    "url": "server.php",
                    "type": "POST",
                    data: {
                        action: action_init
                    }

                }, responsive: true,
                "processing": true,
                "serverSide": true,
                "columns": [

                    {"data": "id"},
                    {"data": "fname"},
                    {"data": "lname"},
                    {"data": ""},
                ],
                "columnDefs": [
                    {"width": "20px", "targets": [0]},
                    {className: "center-text ", "targets": [2]},
                    {
                        "targets": [0, 1, 2],
                        "orderable": false,
                    },
                    {
                        "targets": [0],
                        "visible": false,
                    },

                    {

                        "render": function (data, type, row) {

                            return '<i class="fa fa-edit edit_item" access="edit"   data-id="' + row["id"] + '" ></i>';
                        },
                        "targets": 3
                    },
                ],
                "order": [[0, "ASC"]]

            });
        }


        //HERE WE GET DATA WHEN CLICK EDIT BTN

        //edit_item LINE 77 CLASS edit_item
        $(document).on("click", ".edit_item", function () {

            var id = ($(this).data("id"));

            if ($(this).hasClass("edit_item")) {
                $("#console").text( );
                $("#console").html("You can parse the <b>getDTRow(id)</b>  AS JSON TO GET DATA <br> <br>" + JSON.stringify(getDTRow(id)));
            }
        });




        function getDTRow(id) {
            var indexes = view_table.rows().eq(0).filter(function (rowIdx) {
                // console.log(rowIdx)
                return view_table.cell(rowIdx, 0).data() == id ? true : false;
            });

            var row = view_table.rows(indexes)
                    .nodes();
            return view_table.rows(indexes).data()[0];

        }

    </script>

</html>

测试应用程序
单击编辑图标
名字
姓
编辑

var视图_表; $(函数(){ initTable(); }); 函数initTable(){ var action_init=“获取数据”; view_table=$('#view_table')。数据表({ “ajax”:{ “url”:“server.php”, “类型”:“职位”, 数据:{ 动作:动作_init } },回答:是的, “处理”:对, “服务器端”:正确, “栏目”:[ {“数据”:“id”}, {“数据”:“fname”}, {“数据”:“lname”}, {“数据”:“}, ], “columnDefs”:[ {“宽度”:“20px”,“目标”:[0]}, {className:“中心文本”,“目标”:[2]}, { “目标”:[0,1,2], “可订购”:错误, }, { “目标”:[0], “可见”:假, }, { “渲染”:函数(数据、类型、行){ 返回“”; }, “目标”:3 }, ], “订单”:[[0,“ASC”]] }); } //在这里,我们得到数据时,点击编辑BTN //编辑项目L