未捕获的类型错误:数据表

Posted

技术标签:

【中文标题】未捕获的类型错误:数据表【英文标题】:Uncaught TypeError: Datatables 【发布时间】:2019-12-08 07:18:36 【问题描述】:

我正在尝试使用数据表列出表中的数据,但出现错误

“未捕获的类型错误:无法读取未定义的属性‘长度’”

我不知道为什么。感谢任何帮助,因为我是此类程序的新手。

我的html:

<table class="table mg-b-0 table-contact" style="width:100% !important;" id="preEnrolTable">
            <thead>
            <tr>
                <!--<th class="wd-5p">
                    <label class="ckbox mg-b-0">
                        <input type="checkbox"><span></span>
                    </label>
                </th>-->
                <th class="tx-10-force tx-mont tx-medium">DNI</th>
                <th class="tx-10-force tx-mont tx-medium hidden-xs-down">Nombre</th>
                <th class="tx-10-force tx-mont tx-medium hidden-xs-down">Tarjeta</th>
                <th class="tx-10-force tx-mont tx-medium hidden-xs-down">Clave</th>
                <th class="tx-10-force tx-mont tx-medium hidden-xs-down">Privilegio</th>
                <th class="tx-10-force tx-mont tx-medium hidden-xs-down">Huella</th>
                <th class="tx-10-force tx-mont tx-medium hidden-xs-down">Rostro</th>
                <th class="wd-5p hidden-xs-down"></th>
            </tr>
            </thead>
        </table>

这是应该带来数据的脚本:

function getPreEnrol() 

            $("#preEnrolTable").DataTable().clear();
            $("#preEnrolTable").DataTable().destroy();
            var table = jQuery("#preEnrolTable");
            var oTable = table
                .on('preXhr.dt',function(e,settins,data)
                    $("#modalLoadText").html('Estamos cargando la información, espere un momento!');
                    $("#modalLoad").modal('show');
                )

                .dataTable(
                    "processing": false,
                    "autoWidth": false,
                    "paging": true,
                    "pageLength": 5,
                    "serverSide": true,
                    "order": [
                        [0, 'asc']
                    ],
                    "ajax": 
                        "url": "SYS_include/WS/PreEnrolamiento/WS_PreEnrolamiento.php",
                        "data": 
                            "getDatos":true
                        
                    
...

这是在 ajax url 中调用的脚本:

$Permisos = new Permisos();
$pagina=45;
$modulo=3;
$i = $Permisos->traerPermisos($json,$pagina,$modulo);

$preEnrol = new PreEnrolamiento();

//error_log($_GET["getDatos"]); // devuelve true
//error_log(print_r($_GET["getDatos"])); // devuelve 1
if(isset($_GET["getDatos"]) && !empty($_GET["getDatos"]))

    switch ($i) 
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
            echo $preEnrol->getPreEnrolamientos($instancia,$sucursal,$conn);
            break;
    
else if(isset($_POST["getNac"]) && !empty($_POST["getNac"]))

    switch ($i) 
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
            $nacionalidades = Dni::obtenerNacionalidades($instancia,$conn);
            echo json_encode($nacionalidades);
            break;
    


【问题讨论】:

在浏览器的网络检查器中查看 ajax 响应,以确保它符合预期。很可能不是。 另外,你确定$("#preEnrolTable") 不应该是$("#ColabsTable") 吗?我在上面的 HTML 中没有看到 id 为“preEnrolTable”的元素。 数据是您预期的吗?是不是数据表可以解析的响应? 显示错误在哪一行?因为你没有在上面的代码中调用.length DataTables: Cannot read property 'length' of undefined的可能重复 【参考方案1】:

我终于找到了解决问题的方法,如果有人需要,我会在这里发布,我的 ajax 调用:

“阿贾克斯”:

                    "url": "SYS_include/WS/PreEnrolamiento/WS_PreEnrolamiento.php", 
                    "type":"get", //added
                    "dataType":'json', //added                  
                    "dataSrc": "", //added
                    "data":"getDatos": true 
                      ,

【讨论】:

以上是关于未捕获的类型错误:数据表的主要内容,如果未能解决你的问题,请参考以下文章

数据表插件错误未捕获的类型错误:无法读取未定义的属性“mData”

未捕获的类型错误:无法设置未定义数据表的属性“_DT_CellIndex”

数据表:未捕获的类型错误:无法读取未定义的属性“按钮”

未捕获的类型错误:无法读取未定义 ONn 数据表的属性“样式”

数据表:未捕获的类型错误:无法读取未定义的属性“长度”?

数据表(行详细信息):未捕获的类型错误:无法读取未定义的属性“样式”