jquery dataTable数据显示问题

jquery dataTable插件使用点记录
使用dataTable要按照文档要求的格式才可显示数据,https://www.datatables.net/manual/data/
这里可以看到有几种格式,我项目中使用的是Object类型的数据,即controller返回的data为List格式,Object一般为自己定义的bean;也可以是List>,因为我的dao层使用的是mybatis,如果不自定义对象,mybatis默认映射返回Map,如果是多个对象,则返回的是List>,实际上直接返回List>就可以在dataTable中显示。
今天遇到的情况是无法显示,一般前端浏览器开发工具看到的报错为 Uncaught TypeError: Cannot read property ‘length’ of undefined,
以前我看到这种异常会以为是插件报错等等等等,后来发现是数据什么的不对。
这里有两种情况:
var table = $(’#example0’).DataTable({
“ajax”:urlUtil+"/getOperData/operInfo",
“columns”: [
{ “data”: “operId” },
{ “data”: “loginName” },
{ “data”: “operName” },
{ “data”: “operIp” },
{ “data”: “operEmail” },
{ “data”: “operTelephone” },
{ “data”: “operState” }
]};
如果ajax是这么写的话: 如果返回数据为List,需要将它放到map里面,像这样(我这里举个栗子,大家要注意规范):
HashMap map = new HashMap();
map.put(“data”, List);
然后返回json即可;

第二种情况是:
如果不想像上面那么麻烦,而直接返回list的话,要这样写:
var table = $(’#example0’).DataTable({
“ajax”:{
url: urlUtil+"/getOperData/operInfo",
type: “GET”,
dataSrc: function(data){
return data;
}
},
“columns”: [
{ “data”: “operId” },
{ “data”: “loginName” },
{ “data”: “operName” },
{ “data”: “operIp” },
{ “data”: “operEmail” },
{ “data”: “operTelephone” },
{ “data”: “operState” }
]};
当然了,不知道大家遇到的情况是不是一样,我这里只是做一些记录,具体原理还没有深究。
告辞了。。。

你可能感兴趣的:(前端,jquery,dataTable)