“请求的未知参数”数据表错误将数据从 PHP 传递到 JS

Posted

技术标签:

【中文标题】“请求的未知参数”数据表错误将数据从 PHP 传递到 JS【英文标题】:"Requested unknown parameter" datatables error passing data from PHP to 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';。非常感谢。你可以回复我的问题,我会接受你的回答!祝你有美好的一天 【参考方案1】:

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

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

【讨论】:

以上是关于“请求的未知参数”数据表错误将数据从 PHP 传递到 JS的主要内容,如果未能解决你的问题,请参考以下文章

数据表错误:“请求的未知参数”

通过XmlHttpRequest将数据从JS传递给PHP

为第 0 行请求的未知参数“0”

带有 colspan 的数据表,警告:请求的未知参数

将数据从 PHP 传递到 HTML

如何将变量和数据从 PHP 传递到 JavaScript?