Comment faire pour envoyer le numéro de la page actuelle dans la requête Ajax
Je suis à l'aide de jQuery Datatables pour afficher énorme quantité de données dans une table. Je suis la page de données sage sur requête Ajax comme ceci:
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
}
} );
et ici c'est le printemps contrôleur:
@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;
}
Le problème est que quand je change de page dans la table des alertes corriger pageNo
sur la page (en JavaScript), mais au printemps, contrôleur, je suis toujours la première valeur affectée à la variable pageNo
et pas le numéro de la page actuelle.
Comment puis-je passer pageNo
dynamiquement au printemps contrôleur? Toute aide est appréciée.
Edit:
J'ai mis à jour JavaScript comme ceci:
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" }
]
});
Mais il me fait une erreur:
DataTables avertissement: table id=propertyTable - Ne peut pas réinitialiser DataTable.
OriginalL'auteur Narendra | 2015-06-22
Vous devez vous connecter pour publier un commentaire.
DataTables envoie les paramètres
start
etlength
dans la demande que vous pouvez utiliser pour calculer le numéro de page, voir Traitement côté serveur.Si vous avez toujours besoin d'avoir l'URL de la structure avec le numéro de la page, vous pouvez utiliser le code ci-dessous:
data.start / data.length + 1
OriginalL'auteur Gyrocode.com
"Non testé"
Edit: Ajout de "récupérer": true dans les options pour récupérer la table d'instance (v1.10), vérifier si la table existe. Changé fnSettings de réglage() pour datatable v1.10.
Vous pouvez essayer de lire à partir de la datatable paramètres, puis à partir de paramètres de lecture _iDisplayStart et _iDisplayLength , puis calculer le courant de l'index de la page comme suit:
puis en appel ajax passer currentPageIndex:
La version de la table de données utilisez-vous ?
1.10.0, aussi j'ai mis à jour ma question. veuillez vérifier où j'ai fais de mal. merci.
Merci @SSA. Mais comme Gyrocode.com's réponse est fonctionne très bien pour moi, donc je n'ai pas de vérifier votre code mis à jour. Il peut fonctionner bien, Merci quand même!
OriginalL'auteur SSA