【发布时间】:2015-07-10 04:22:30
【问题描述】:
我正在尝试从服务器端进行分页。我的项目技术栈是 MongoDB + Spring + Angular + Angular-datatables。
MongoDB 提供了非常简单的方法来根据分页和排序参数检索数据
此处粘贴了获取数据的 URL,这是一个 'POST' 请求,并且还希望通过请求正文发送一些其他参数
/myapp/products/filter?pageSize=10&pageNo=1
经过一番谷歌搜索并浏览了 jQuery DataTables 手册后,我在angular-datatables 中发现了如何进行此操作。粘贴以下代码:
vm.dtOptions = DTOptionsBuilder.newOptions().withOption('ajax', {
url : '/myapp-api/products/filter',
type : 'POST',
contentType : 'application/json',
dataType :'json',
accepts: "application/json",
headers: {
Accept: "application/json",
Authorization : 'Bearer eyJ0eXAiO.eyJpZCI6IjU1OhSbNTdmIoq1Y'
},
data:function(d){
var pageNo = d.start;
var pageSize = d.length;
return JSON.stringify( d );
},
success:function(response){
console.log(" ajax > post > success > response > ", response);
var page = {
"draw":1,
"data" : response.list,
"recordsTotal" :response.list.length,
"recordsFiltered" :response.list.length
};
return page;
}
})
.withDataProp('data')
.withOption('processing', true)
.withOption('serverSide', true)
.withPaginationType('full_numbers');
我能够成功接收响应,但数据表未显示数据。在成功函数回调中,按照数据表网页中提到的格式返回数据。
此外,我还有一些疑问:
我可以使用
$http.post方法从服务器检索数据吗,我知道数据表有一些机制,它在数据表中完成的每个操作上调用 ajax。data: function(){}以对象格式为我提供了整个数据表列和其他详细信息,使用JSON.Stringify(data)作为解决方法。
我的服务器端实现需要 JSON 数据,我只需要几个参数。
这里有没有人使用$http.post 方法完成了实现。当我尝试它时,它给了我错误:
TypeError: 无法读取未定义的属性“aDataSort”
$scope.dtOptions = DTOptionsBuilder.newOptions()
.withOption('ajax', function(data, fnCallback, settings) {
$http.post('/myapp/products/filter?pageNo=1&pageSize=10', {}).then(function(response) {
fnCallback(response);
});
})
.withDataProp('list')
.withOption('processing', true)
.withOption('serverSide', true)
.withPaginationType('full_numbers');
【问题讨论】:
标签: angularjs spring mongodb datatables