So senden Sie die aktuelle Seitenzahl im Ajax-request
Ich bin mit jQuery-DataTable-Anzeige riesige Menge von Daten in einer Tabelle. Ich bin immer Daten seitenweise auf Ajax-Anfrage so:
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
}
} );
und hier ist der Frühling controller:
@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;
}
Das problem ist, dass wenn ich die Seite in die Tabelle alerts richtige pageNo
auf der Seite (in JavaScript), aber im Frühjahr controller bin ich immer der erste Wert der Variablen zugewiesen pageNo
und nicht die aktuelle Seite Anzahl.
Wie gebe ich pageNo
dynamisch auf den Frühling-controller? Jede Hilfe ist willkommen.
Edit:
Ich aktualisiert JavaScript so:
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" }
]
});
Aber es gibt mir eine Fehlermeldung:
DataTables warning: table id=propertyTable - Nicht reinitialisiert DataTable.
Du musst angemeldet sein, um einen Kommentar abzugeben.
DataTables schon sendet Parameter
start
undlength
in der Anforderung, die Sie verwenden können, um zu berechnen, Seitenzahl, siehe Server-seitige Verarbeitung.Wenn Sie noch brauchen, um die URL-Struktur der Seite mit der Nummer, können Sie folgenden code verwenden:
data.start / data.length + 1
"Ungetestet"
Edit: Added "abrufen": true im Optionen, um die Tabelle Beispiel (v1.10), überprüft, ob eine Tabelle vorhanden ist. Geändert fnSettings zur Einstellung() für datatable-v1.10.
Können Sie versuchen, zu Lesen, aus der Datentabelle Einstellungen und dann über " Einstellungen Lesen _iDisplayStart und _iDisplayLength , dann berechnen aktuelle Seite index wie folgt:
dann im ajax-Aufruf übergeben currentPageIndex: