带有Node.js的jQuery数据表

所以我试图用datatables插件实现分页表,这是我第一次使用这个插件。 我按照插件上的文档,试图通过使用Ajax从服务器获取值,如插件文档中所示。

我似乎得到以下错误,一旦我提出请求,我不确定为什么?

错误: Uncaught TypeError:无法读取未定义的属性“长度”

在客户端我有以下代码

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',摘要:'由Raj创build的BugBounty报告',lastUpdatedDate:'2015-06-15 01:05',createdDate:' ','paypalLoginID:'raaj@paypal.com'}],searchStatus:'成功',eBayUserID:'',errorCode:'0',rowCount:'6',pageNumber:'1' ,paginationValue:'1',paypalLoginID:'raaj@paypal.com'}

知道是否有任何人已经为node.js服务器端处理数据表是一件非常好的事情

你需要定义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将项目属性映射到列

你根本不用担心服务器端的处理。 我用一个简单的方法来欺骗dataTables初始化。

首先,在确认数据正确显示之后,您将需要通过您最喜欢的方式获取要在表中显示的数据,然后前往初始化dataTables并使其在初始化之前延迟。

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

例如,在我的情况下,我延迟了100毫秒,它就像一个魅力。