我理解这是一个受欢迎的问题,我已经在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选项
它甚至更简单:只需dataSrc:''
在ajax定义中使用选项,因此dataTable知道期望数组而不是对象:
$('#pos-table2').DataTable({ processing: true, serverSide: true, ajax:{url:"pos.json",dataSrc:""} } );
请参阅ajax选项
好的,谢谢大家的帮助.
然而问题比那容易得多.
我需要做的就是修复我的JSON以将数组分配给名为data的属性,如下所示.
{ "data": [{ "name_en": "hello", "phone": "55555555", "email": "a.shouman", "facebook": "https:\/\/www.facebook.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控制台错误.
尝试如下返回必须是d,而不是d.data
ajax: { "url": "xx/xxx/xxx", "type": "GET", "error": function (e) { }, "dataSrc": function (d) { return d } },