jQuery 具有 Node.js 的数据表
jQuery DataTables with Node.js
所以我正在尝试使用 datatables 插件实现分页 table,这是我第一次使用这个插件。我遵循了插件文档,并尝试按照插件文档中的说明,通过使用 Ajax 从服务器获取值。
我在发出获取请求后似乎收到以下错误,我不确定为什么?
错误:未捕获类型错误:无法读取未定义的 属性 'length'
在客户端我有以下代码
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: 'raaj@paypal.com' } ], searchStatus: 'Success', eBayUserID: '', errorCode: '0', rowCount: '6', pageNumber: '1', paginationValue: '1', paypalLoginID: 'raaj@paypal.com' }
很高兴知道是否有人使用过 node.js 服务器端数据处理 tables
您需要定义 dataSrc
and columns.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 :
<table id="example"></table>
dataSrc
指定保存行项的数组的名称(原因是“无法读取 属性 'length' of undefined”)
columns.data
将项目属性映射到列
您根本不必为服务器端处理而烦恼。
我使用了一种简单的方法来欺骗 dataTables
初始化。
首先,您需要通过您最喜欢的方式获取要在table中显示的数据,确认数据显示良好后,现在前往您初始化的地方dataTables
并使其在初始化之前延迟。
setTimeout(() => {
$('#yourtable').dataTable({
// datatables customization options
});
}, 100)
例如,在我的例子中,我给了它 100 毫秒的延迟,它的效果非常好。
所以我正在尝试使用 datatables 插件实现分页 table,这是我第一次使用这个插件。我遵循了插件文档,并尝试按照插件文档中的说明,通过使用 Ajax 从服务器获取值。
我在发出获取请求后似乎收到以下错误,我不确定为什么?
错误:未捕获类型错误:无法读取未定义的 属性 'length'
在客户端我有以下代码
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: 'raaj@paypal.com' } ], searchStatus: 'Success', eBayUserID: '', errorCode: '0', rowCount: '6', pageNumber: '1', paginationValue: '1', paypalLoginID: 'raaj@paypal.com' }
很高兴知道是否有人使用过 node.js 服务器端数据处理 tables
您需要定义 dataSrc
and columns.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 :
<table id="example"></table>
dataSrc
指定保存行项的数组的名称(原因是“无法读取 属性 'length' of undefined”)columns.data
将项目属性映射到列
您根本不必为服务器端处理而烦恼。
我使用了一种简单的方法来欺骗 dataTables
初始化。
首先,您需要通过您最喜欢的方式获取要在table中显示的数据,确认数据显示良好后,现在前往您初始化的地方dataTables
并使其在初始化之前延迟。
setTimeout(() => {
$('#yourtable').dataTable({
// datatables customization options
});
}, 100)
例如,在我的例子中,我给了它 100 毫秒的延迟,它的效果非常好。