jquery dataTable資料顯示問題
jquery dataTable外掛使用點記錄
使用dataTable要按照文件要求的格式才可顯示資料,https://www.datatables.net/manual/data/
這裡可以看到有幾種格式,我專案中使用的是Object型別的資料,即controller返回的data為List格式,Object一般為自己定義的bean;也可以是List<Map<String,Object>>,因為我的dao層使用的是mybatis,如果不自定義物件,mybatis預設對映返回Map<String, Object>,如果是多個物件,則返回的是List<Map<String, Object>>,實際上直接返回List<Map<String, Object>>就可以在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” }
]};
當然了,不知道大家遇到的情況是不是一樣,我這裡只是做一些記錄,具體原理還沒有深究。
告辭了。。。