【问题标题】:"Requested unknown parameter" datatables error passing data from PHP to JS“请求的未知参数”数据表错误将数据从 PHP 传递到 JS
【发布时间】:2021-09-14 11:01:39
【问题描述】:

我正在尝试添加一个额外的默认列(编辑和删除按钮),以及其余的行,动态。

当我尝试传递我的 $resultados 并在我的 JS 代码中使用 datos 时收到此错误。

DataTables warning: table id=tablaUsuarios - Requested unknown parameter 'ACCIÓN' for row 0, column 6. For more information about this error, please see http://datatables.net/tn/4

我的$resultados 已经正确包含数据(即使有额外的列):

我看到我的表格有我的数据,但没有看到按钮列(我在$resultados 变量内有这个数据,正如你在上一个屏幕截图中看到的那样)。

这是我的完整代码:

<?php

include_once(DIR_PLUGINS.'/alexcrudgenerator/main.php');

    $test = new GenerateCrud($_POST['tableName'], $_POST['id'], $_POST['tableFields']);

    switch($_POST['action']){
        
        case 'datosTabla': // OK.
            
            $res = json_decode($_POST['datos']);
            echo json_encode($res, JSON_UNESCAPED_UNICODE);
            
            break;
            
        case 'showtable': // OK.

            $res = getEntireTable($_POST['tableName'], $_POST['id'], $_POST['tableFields']);
            
            foreach ($res as $data){
                
                $data->botones = "<div class='text-center'><div class='btn-group'><button id='modificar_$data->id' class='btn btn-primary btn-sm btnEditar' value='edit'><i class='material-icons'>edit</i></button><button onclick='Delete($data->id)' class='btn btn-danger btn-sm btnBorrar'><i class='material-icons' value='delete'>delete</i></button></div></div>"; 
                $resultados['data'][] = $data;
            }           
            
            $resultados = json_encode($resultados); // 7 PROPIEDADES
            
            foreach(json_decode($_POST['tableFields']) as $columnsDB){
                $fields[] = array('data'=>$columnsDB);
            }

            $fields[]['data'] = 'ACCIÓN';
            $fields = json_encode($fields);
            
?>
            <head>
                <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
            </head>
            
            <div class="container caja">
                <div class="row">
                    <div class="col-lg-12 col-sm-12">
                        <div>
                            <table id="tablaUsuarios" class="table table-striped table-bordered table-condensed hover" style="width:100%" >
                                <thead class="text-center">
                                    <tr>
                                        <?php
                                            foreach (json_decode($_POST['tableFields']) as $columnsTH){
                                                echo '<th>' . strtoupper($columnsTH) . '</th>';
                                            }
                                            echo '<th>ACCIÓN</th>';
                                        ?>
                                    </tr>
                                </thead>
                                <tbody>
                                </tbody>
                            </table>
                        </div>
                    </div>
                </div>
            </div>

            <script>
                
                $(document).ready(function() {
                    var datos= <?=$resultados?>;
                    var dynamicColumns = <?=$fields?>;
                    datos = JSON.stringify(datos); // I convert to JSON AGAIN because if not, my data is not showed

                    $('#tablaUsuarios').DataTable({
                        "language": {"url": "https://cdn.datatables.net/plug-ins/1.10.25/i18n/Spanish.json"},
                        "paging": true,
                        "lengthChange": true,
                        "searching": true,
                        "info": true,
                        "autoWidth": true,
                        "scrollX": true,

                        "ajax":{
                            "url": '<?=SITE_URL_ADMIN?>/alexcrudgenerator/crud/res/',
                            "method": 'POST',
                            "data":{action: "datosTabla", datos: datos}
                        },

                        "columns": dynamicColumns
                    });
                })
            </script>
<?php
        break;      
}
?>

有人可以帮助我吗?提前谢谢!

【问题讨论】:

  • 嘿! ACCIÓN 的重音会不会做错什么?
  • 很难阅读您的$resultados 变量的屏幕截图。这是reasons why 之一,将数据作为文本而不是文本图像提供几乎总是更好。
  • 话虽如此,看起来您的$resultados 按钮数据值被称为botones - 但您似乎在这里使用标题名称:$fields[]['data'] = 'ACCIÓN'; 而不是数据值名称。那么,如果将其更改为 $fields[]['data'] = 'botones'; 会发生什么?
  • @DafuQi 谢谢你的回复,不幸的是,没有,口音没有问题:D
  • @andrewjamesOhhh,是的,你是对的......我不得不将 $fields[]['data'] = 'ACCIÓN'; 更改为 $fields[]['data'] = 'botones';。非常感谢。你可以回复我的问题,我会接受你的回答!祝你有美好的一天

标签: php jquery datatables


【解决方案1】:

您的 $resultados 按钮数据值称为 botones - 但您似乎在此处使用标题名称:$fields[]['data'] = 'ACCIÓN'; 而不是数据值名称。

您可以改为将其更改为 $fields[]['data'] = 'botones';

【讨论】:

    猜你喜欢
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 2015-09-01
    • 1970-01-01
    • 2014-09-13
    • 1970-01-01
    相关资源
    最近更新 更多