当前位置:  开发笔记 > 前端 > 正文

DataTables:无法读取未定义的属性"长度"

如何解决《DataTables:无法读取未定义的属性"长度"》经验,为你挑选了4个好方法。

我理解这是一个受欢迎的问题,我已经在Stack Overflow和其他网站(包括datatables网站)上阅读了所有类似的问题.

为了澄清,我正在使用

PHP Codeigniter

Materliazecss

我还确保我正确地收到了JSON数组:

[{"name_en":"hello","phone":"55555555"},{"name_en":"hi","phone":"00000000"}]

我的HTML表格如下所示:

Name Phone

这是我的document.ready功能:

  $(document).ready(function(){
            //$('#customer_table').DataTable();
            $('#customer_table').DataTable( {
                "ajax": 'json',
                "dataSrc": "",
                 "columns": [
                    { "data": "email" },
                    { "data": "name_en" }
                ]
            });
  });

我得到的错误是

未捕获的TypeError:无法读取未定义的属性"长度"

tomsoft.. 86

它甚至更简单:只需dataSrc:''在ajax定义中使用选项,因此dataTable知道期望数组而不是对象:

    $('#pos-table2').DataTable({
                  processing: true,
                  serverSide: true,
                  ajax:{url:"pos.json",dataSrc:""}
            }
    );

请参阅ajax选项



1> tomsoft..:

它甚至更简单:只需dataSrc:''在ajax定义中使用选项,因此dataTable知道期望数组而不是对象:

    $('#pos-table2').DataTable({
                  processing: true,
                  serverSide: true,
                  ajax:{url:"pos.json",dataSrc:""}
            }
    );

请参阅ajax选项



2> Abdel-Rahman..:

好的,谢谢大家的帮助.

然而问题比那容易得多.

我需要做的就是修复我的JSON以将数组分配给名为data的属性,如下所示.

{
  "data": [{
    "name_en": "hello",
    "phone": "55555555",
    "email": "a.shouman",
    "facebook": "https:\/\/www.facebook.com"
  }, ...]
}


这是事实,但是胡说八道

3> Gyrocode.com..:

原因

此错误TypeError: Cannot read property 'length' of undefined通常意味着jQuery DataTables无法在响应Ajax请求时找到数据.

默认情况下,jQuery DataTables期望数据采用下面显示的格式之一.发生错误,因为数据以非默认格式返回.

数组数组

{ 
   "data": [
      [
         "Tiger Nixon",
         "System Architect",
         "$320,800",
         "2011/04/25",
         "Edinburgh",
         "5421"
      ]
   ]
}

对象数组

{ 
   "data": [
      {
         "name": "Tiger Nixon",
         "position": "System Architect",
         "salary": "$320,800",
         "start_date": "2011/04/25",
         "office": "Edinburgh",
         "extn": "5421"
      }
   ]
}

使用默认格式或使用ajax.dataSrc选项在Ajax响应中定义包含表数据的数据属性(data默认情况下).

有关更多信息,请参阅数据阵列位置

链接

有关更多详细信息,请参阅jQuery DataTables:常见JavaScript控制台错误.



4> Nisal Edu..:

尝试如下返回必须是d,而不是d.data

 ajax: {
      "url": "xx/xxx/xxx",
      "type": "GET",
      "error": function (e) {
      },
      "dataSrc": function (d) {
         return d
      }
      },

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有