【问题标题】: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

标签: php html json ajax datatables


【解决方案1】:

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

“阿贾克斯”:{

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2018-01-04
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    相关资源
    最近更新 更多