之前常用的表格插件是bootstraptable·,现在换了地方工作,这边用的是datatables。上午再看官网API,感觉写的不是很清晰很到位。
看到一篇博客写的很详细,收藏了。最全的jquery datatables api 使用详解-Amoni
我根据网上的例子写了一个ajax请求数据的demo,结果报错Uncaught TypeError: Cannot read property 'length' of undefined,错误位置实在datatables插件的js里面。代码如下:
DataTables
姓名
岗位
工资
部门
url里的链接是我在EasyMock模拟的数据
我的数据格式如下:
[{
"name": "1",
"position": "1",
"salary": "1",
"office": "1"
},
{
"name": "2",
"position": "2",
"salary": "2",
"start_date": "2011/07/25",
"office": "2",
"extn": "8422"
},
{
"name": "3",
"position": "3",
"salary": "3",
"start_date": "2011/04/25",
"office": "3",
"extn": "5421"
},
{
"name": "4",
"position": "4",
"salary": "4",
"start_date": "2011/07/25",
"office": "4",
"extn": "8422"
}, {
"name": "5",
"position": "5",
"salary": "5",
"start_date": "2011/04/25",
"office": "5",
"extn": "5421"
},
{
"name": "6",
"position": "6",
"salary": "6",
"start_date": "2011/07/25",
"office": "6",
"extn": "8422"
}, {
"name": "7",
"position": "7",
"salary": "7",
"start_date": "2011/04/25",
"office": "7",
"extn": "5421"
},
{
"name": "8",
"position": "8",
"salary": "8",
"start_date": "2011/07/25",
"office": "8",
"extn": "8422"
}, {
"name": "9",
"position": "9",
"salary": "9",
"start_date": "2011/04/25",
"office": "9",
"extn": "5421"
},
{
"name": "10",
"position": "10",
"salary": "10",
"start_date": "2011/07/25",
"office": "10",
"extn": "8422"
}
]
把数据贴出来放在datatables的data里,没问题,可以正常加载;代码中注释的部分是我尝试在datatables的外部用ajax同步请求数据,赋值给全局变量,在赋值给datatables的data。没问题,可以正常加载。
但是一使用datatables 的ajax请求方法就错误!!
后来又查了好久才发现。确实是数据格式不对。更改数据格式如下:
{
sEcho: 1, //当前页
iTotalRecords: 2, //总数
iTotalDisplayRecords: 3, //筛选后总数
aaData: //返回的集合
[{
"name": "1",
"position": "1",
"salary": "1",
"office": "1"
},
{
"name": "2",
"position": "2",
"salary": "2",
"start_date": "2011/07/25",
"office": "2",
"extn": "8422"
},
{
"name": "3",
"position": "3",
"salary": "3",
"start_date": "2011/04/25",
"office": "3",
"extn": "5421"
},
{
"name": "4",
"position": "4",
"salary": "4",
"start_date": "2011/07/25",
"office": "4",
"extn": "8422"
},
{
"name": "5",
"position": "5",
"salary": "5",
"start_date": "2011/04/25",
"office": "5",
"extn": "5421"
},
{
"name": "6",
"position": "6",
"salary": "6",
"start_date": "2011/07/25",
"office": "6",
"extn": "8422"
},
{
"name": "7",
"position": "7",
"salary": "7",
"start_date": "2011/04/25",
"office": "7",
"extn": "5421"
},
{
"name": "8",
"position": "8",
"salary": "8",
"start_date": "2011/07/25",
"office": "8",
"extn": "8422"
},
{
"name": "9",
"position": "9",
"salary": "9",
"start_date": "2011/04/25",
"office": "9",
"extn": "5421"
},
{
"name": "10",
"position": "10",
"salary": "10",
"start_date": "2011/07/25",
"office": "10",
"extn": "8422"
}
]
}
终于成功!
重点是aaDate,要把数据放在aaDate中,这样就不会报错了