關於datatable的數據綁定問題


  最近做項目掉在數據綁定這個小坑里了,最后發現問題其實很簡單,只是官方的文檔描述可能不太清除導致的吧。首先貼上官網地址:http://www.datatables.club/

  關於這個插件的簡單使用就不說了,按照官網來就可以了。在這里重點說一下數據綁定的問題:數據綁定的方式有四種,這里說一下ajax綁定數據的方式。因為我的數據綁定的時候報了這個錯:

  當時真的感覺很神奇啊,怎么會length不存在呢?於是我就去看了看底層的代碼。

重點就是這個了,這個對象不存在他的length屬性自然也就不存在了。這個對象怎么會不存在呢?

 

 框起來的部分就是我根據后台提供接口返回的數據,他要求的json數據格式和我接收到的數據格式不一樣,這就是問題的原因了,最后我看了一下我綁定數據的這個代碼:

 1 $('#exampleTwo').DataTable({
 2                 searching: false, //去掉搜索框方法一:百度上的方法,但是我用這沒管用
 3                 bFilter: false, //去掉搜索框方法三:這種方法可以
 4                 bLengthChange: false, //去掉每頁顯示多少條數據方法
 5                 "paging": false, // 禁止分頁
 6                 "ordering": false, // 禁止排序
 7                 "info": false, //底部文字
 8                 "ajax": ip + 'ZRTX/GetLeftTreeAndPeople?xzdm=611000', //數據源
 9                 "columns": [{
10                         data: 'Name'
11                     },
12                     {
13                         data: 'XZPeople'
14                     },
15                     {
16                         data: 'XZPeopleBH'
17                     },
18                     {
19                         data: 'XZDepertment'
20                     },
21                     {
22                         data: 'JSPeople'
23                     },
24                     {
25                         data: 'JSPeopleBH'
26                     },
27                     {
28                         data: 'JSDepertment'
29                     }
30                 ]
31             });

又對了對官方的文檔才發現了問題:

 

 

 官方的文檔有很清楚的說明,不同的json數據格式,綁定數據的寫法也是不同的,如果是直接返回的一個數組里面包含多個json對象,那么我那種寫法是不對的,正確的寫法是這樣的:

 1 $('#exampleTwo').DataTable({
 2                 searching: false, //去掉搜索框方法一:百度上的方法,但是我用這沒管用
 3                 bFilter: false, //去掉搜索框方法三:這種方法可以
 4                 bLengthChange: false, //去掉每頁顯示多少條數據方法
 5                 "paging": false, // 禁止分頁
 6                 "ordering": false, // 禁止排序
 7                 "info": false, //底部文字
 8                 //"ajax": ip + 'ZRTX/GetLeftTreeAndPeople?xzdm=611000', //數據源
 9                 ajax: {
10                     url: ip + 'ZRTX/GetLeftTreeAndPeople?xzdm=611000',
11                     dataSrc: ''
12                 },
13                 "columns": [{
14                         data: 'Name'
15                     },
16                     {
17                         data: 'XZPeople'
18                     },
19                     {
20                         data: 'XZPeopleBH'
21                     },
22                     {
23                         data: 'XZDepertment'
24                     },
25                     {
26                         data: 'JSPeople'
27                     },
28                     {
29                         data: 'JSPeopleBH'
30                     },
31                     {
32                         data: 'JSDepertment'
33                     }
34                 ]
35             });

  ajax屬性多了一個

   dataSrc: ''
  這樣就對了,之前的那種寫法是默認數據外層有data包裹的所以才會報錯。
  
 還有一點要注意的就是字段名的問題,返回的json數據的字段名可以和顯示的表格列名不一致,但是一定要寫返回的json數據的字段名,否則會報錯的。


 這個掉坑里我發現在寫代碼的時候引用插件的js最好不要引用壓縮版,因為壓縮版相當於是加密了的很不方便查找錯誤,直接引用未壓縮的可以很方便的看到底層的代碼已經修改錯誤。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM