2015-06-15 128 views
2

所以我試圖用datatables插件實現分頁表,這是我第一次使用這個插件。我遵循插件上的文檔,並嘗試通過使用Ajax從服務器獲取值,如插件文檔中所示。帶Node.js的jQuery DataTables

我似乎遇到以下錯誤,一旦我提出請求,我不確定爲什麼?

錯誤:遺漏的類型錯誤:無法讀取的不確定

財產「長度」在客戶端我有以下代碼

viewReports = { 
    init: function(){ 
     $('#paginatedData').DataTable({ 
      "processing": true, 
      "serverSide": true, 
      "ajax": '/viewreports' 
     }); 

    } 
}; 

$(document).ready(viewReports.init); 

在我的服務器端,我有以下

router.get('/viewreports', function(res, req){ 

    async.parallel({ 
     viewReports: function(callback){ 
      restCall('/rest/bugbounty/latest/message/searchReport', 'POST', parameters, function(data){ 
       callback(null, data); 
      }); 
     } 
    }, function(err, result){ 
     if(!err){ 
      res.send(result.viewReports); 
      res.render('viewreports'); 
     } 
    }); 
}); 

歸還的JSON:

{ reportList: [ { reportID: 'EIBBP-448', eBayUserID: ' ', reportStatus: 'New', summary: 'BugBounty Report created by Raj', lastUpdatedDate: '2015-06-15 01:05', createdDate: '2015-06-15 01:05', paypalLoginID: '[email protected]' } ], searchStatus: 'Success', eBayUserID: '', errorCode: '0', rowCount: '6', pageNumber: '1', paginationValue: '1', paypalLoginID: '[email protected]' }

這將是巨大的,知道是否有任何人誰用的node.js服務器端處理工作了數據表

+0

在服務器端處理模式下,您的服務器端代碼應該按照[此處](https://datatables.net/manual/server-side#Returned-data)所述的方式返回JSON格式的數據。請發佈您的服務器返回的JSON文件。 –

+0

所以沒有特定的文件,我保存我的JSON數據,但是在呈現路徑'/ viewreports'時,我能夠在控制檯上看到以下值{reportList: [{reportID:'EIBBP-448', eBayUserID:'', reportStatus:'New', 摘要:'BugBounty Report由Raj創建, lastUpdatedDate:'2015-06-15 01:05', createdDate:'2015-06-15 01:05 ', paypalLoginID:'raaj @ paypal。COM '}], searchStatus: '成功', eBayUserID: '', 的errorCode: '0', rowCount時: '6', PAGENUMBER: '1', paginationValue: '1', paypalLoginID:' [email protected]'} – Raj

+0

我是否需要將上面的json值串聯起來? – Raj

回答

2

您需要定義dataSrccolumns.data - 以下應該工作:

var table = $('#example').DataTable({ 
    processing: true, 
    serverSide: true, 
    ajax: { 
     url: "/viewreports", 
     dataSrc: "reportList" 
    },  
    columns: [ 
     { data : "reportID" }, 
     { data : "eBayUserID" }, 
     { data : "reportStatus" }, 
     { data : "summary" }, 
     { data : "lastUpdatedDate" },   
     { data : "createdDate" },   
     { data : "paypalLoginID" } 
    ]  
}); 

在空表:

<table id="example"></table> 
  • dataSrc來指定哪些列保持行項目被命名爲
  • columns.data項屬性,你根本不必列
+0

謝謝!!這使它工作 – Raj

0

地圖(的「無法讀取屬性未定義‘長’」的原因)麻煩服務器端處理。 我用一個簡單的方法來欺騙dataTables初始化。

首先,您需要在確認數據正常顯示之後,通過您最喜歡的方式獲取要顯示在表格中的數據,然後前往初始化的位置dataTables並使其延遲至初始化。

setTimeout(() => { 
    $('#yourtable').dataTable({ 
     // datatables customization options 
    }); 
}, 100) 

例如,在我的情況下,我給它延遲了100ms,它就像一個魅力。