如何在Ajax请求中发送当前页码

我正在使用jQuery DataTable在表中显示大量数据。我正在像这样在Ajax请求上获取数据页明智的信息:

var pageNo = 1;

$('#propertyTable').dataTable( {

"processing": true,

"serverSide": true,

"ajax": "${contextPath}/admin/getNextPageData/"+pageNo+"/"+10,

"columns": [

{ "data": "propertyId" },

{ "data": "propertyname" },

{ "data": "propertyType" },

{ "data": "hotProperties" },

{ "data": "address" },

{ "data": "state" },

{ "data": "beds" },

{ "data": "city" },

{ "data": "zipCode" }

],

"fnDrawCallback": function () {

pageNo = this.fnPagingInfo().iPage+1;

alert(pageNo); // this alerts correct page

}

} );

这是弹簧控制器:

@RequestMapping(value="/getNextPageData/{pageNo}/{propertyPerPage}")

public @ResponseBody PropertyDatatableDto getNextPageData(@PathVariable Integer pageNo, @PathVariable Integer propertyPerPage) {

System.out.println("called");

System.out.println(pageNo); // this always prints 1, what i need is current pageNo here

PropertyDatatableDto datatableDto = new PropertyDatatableDto();

//datatableDto.setDraw(1);

datatableDto.setRecordsTotal(100);

datatableDto.setRecordsFiltered(100);

datatableDto.setData(adminService.getAllPropertyList());

return datatableDto;

}

问题是,当我更改表中的页面时,它会警告pageNo页面正确(在JavaScript中),但是在spring

controller中,我总是得到分配给变量的初始值,pageNo而不是当前页面号。

如何pageNo动态传递给弹簧控制器?任何帮助表示赞赏。

回答:

我这样更新了JavaScript:

    var oSettings = $('#propertyTable').dataTable().fnSettings();

var currentPageIndex = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1;

$('#propertyTable').dataTable({

"processing": true,

"serverSide": true,

"ajax": "${contextPath}/admin/getNextPageData/"+currentPageIndex+"/"+10,

"columns": [

{ "data": "propertyId" },

{ "data": "propertyname" },

{ "data": "propertyType" },

{ "data": "hotProperties" },

{ "data": "address" },

{ "data": "state" },

{ "data": "beds" },

{ "data": "city" },

{ "data": "zipCode" }

]

});

但这给了我一个错误:

DataTables警告:表id = propertyTable-无法重新初始化DataTable。

回答:

DataTables已经发送了参数,start并且length在请求中可以用来计算页数,请参阅服务器端处理。

如果仍然需要带有页码的URL结构,则可以使用以下代码:

"ajax": {

"data": function(){

var info = $('#propertyTable').DataTable().page.info();

$('#propertyTable').DataTable().ajax.url(

"${contextPath}/admin/getNextPageData/"+(info.page + 1)+"/"+10

);

}

},

以上是 如何在Ajax请求中发送当前页码 的全部内容, 来源链接: utcz.com/qa/422637.html

回到顶部