Ajax-request für server-Seite Daten für jede Seite, die in Datentabellen
Ich bin mit Jquery Datatables laden ein array von Arrays mit Daten (aaData), die über ajax-Aufruf von der server-Seite. Ich will nicht zu ziehen den ganzen Daten auf einmal sondern ich muss, um ajax-request zum laden der Daten jedes mal, wenn Benutzer klickt auf "prev" oder "next" in Datentabellen Paginierung.
Wie kann das erreicht werden ?Ich möchte ein ajax-Aufruf und liefert Ergebnisse auf der Fliegen für, die Seite nur.
Unten ist der javascript-code, wo ich bin, einen Anruf zu tätigen.
$.ajax({
type: "GET",
url: "ajaxBacklog",
contentType: 'application/json',
data: null,
dataType: 'json',
success: function(json){
oTable = $("#backlogTable").dataTable({
"aaData": json.aaData,
"bProcessing": true,
"bServerSide": true,
"sPaginationType": "full_numbers",
"bJQueryUI": true,
"bRetrieve": true,
"bPaginate": true,
"bStateSave": true,
"bSort": true,
"aaSorting": [[ 4, "desc" ]],
"iDisplayLength": 25,
"oLanguage": {
"sProcessing": "<img src='resources/images/loader.gif'/>",
"sEmptyTable": "No records found."
},
"aoColumns": [
{ "sClass": "alignCenter"},
{ "sClass": "left"},
{ "sClass": "left"},
{ "sClass": "left"},
{ "sType": 'date-uk', "sClass":"datecolumn"},
{ "sType": 'date-uk', "sClass":"datecolumn"},
{ "sClass": "left"},
{ "sClass": "left"}
],
"error": function() {
alert("Failed to load Data");
}
});
}
}
);
Habe ich auch nach dem server-seitige Verarbeitung von datatables als gut, aber nichts funktioniert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Datentabellen server-seitige Verarbeitung jeder Klick auf 'zurück'/'weiter' - button (auch der filter, Sortierung etc) - Aufruf request (out of the box) für Funktion angegeben in sAjaxSource Eigenschaft - Sie können dies überprüfen, rufen Sie in Ihrem browser Konsole.
Aufruf haben viele nützliche Parameter. Sie benötigen
iDisplayLength
undiDisplayStart
in Ihrer Funktion für " cut " (nach Sortieren und filtern Sie Ihre Daten ausiDisplayStart
zuiDisplayStart+iDisplayLength
.Sollten Sie natürlich ändern Sie Ihre code-Struktur, wie Sie sehen können, in Datentabellen Dokumentation - definieren Datentabellen code für die Initialisierung und zeigen ajax-Quelle in
sAjaxSource
Eigenschaft.{ "aaData":[ [ "<img src="actionImage.png">, "AB MIDT DATA PROCESSING", "Pre-sales", "Kuldeep Singh", "11-04-2013", "17-04-2013", "WIP", "High" ] ] }
Aber noch bin ich nicht in der Lage, um es zu passen zu meinem Bedarf. Was weiß ich über den datatables ist, bringt seine gesamten Daten, und speichern Sie es im browser Speicher, und da hat es ganz den Daten, Paginierung, Sortierung und Filterung die performance ist sehr schnell. Ich benötige ein ajax-call auf jeden Paginierung Zahl auf, sagen server zu bringen, sagen wir 25 Datensätze zu jeder Zeit. Wie kann das erreicht werden?"sAjaxSource" : json.aaData
aber nicht in der Lage zum Rendern der Antwort. Die URl ajaxBacklog ist abgebildet in struts.xml eine Methode, die das Auffüllen aaData.for (BacklogVO obj : backlogVO) { ArrayList<String> row = new ArrayList<String>(); row.add(addActionColumn()); row.add(obj.getTask()); row.add(obj.getTaskType()); row.add(obj.getOwnedBy()); row.add(obj.getStatus()); row.add(obj.getPriority()); aaData.add(row); }
Wie kann ich änderungen wie pro Anforderung?oTable = $("#id").dataTable({ "sAjaxSource":"ajaxBacklog", "bProcessing":true, "bServerSide":true, "sPaginationType":"full_numbers", "bJQueryUI":true, "bRetrieve":true, "bPaginate":true, "bStateSave":true, "bSort":true, "aaSorting":[[4,"desc"]], "iDisplayLength":25, } });
<table id="backlogTable"> <thead> <tr> <th>Actions</th> <th>Task</th> <th>Task Type</th> <th>Owned By</th> <th>Created Date</th> <th>Expected End Date</th> <th>Status</th> <th>Priority</th> </tr> </thead> <tbody> </tbody> </table>
davon Ausgehen, dass ich diese vielen Spalten.iTotalRecords
undiTotalDisplayRecords
Parameter aus der Funktion{ "aaData":[ [ "<img src="actionImage.png">, "AB MIDT DATA PROCESSING", "Pre-sales", "Kuldeep Singh", "11-04-2013", "17-04-2013", "WIP", "High" ] ], "iTotalDisplayRecords":"25","iTotalRecords":"25"}
Datensätze Gesamt immer auf der Seite angezeigt, sind 146 Zeilen. Anzahl Datensätze insgesamt in der Datenbank ist dieselbe, 146 Zeilen. Abfrage zum abrufen der Daten ist normal "select *" - Abfrage, die bringt den ganzen Daten. Unten die Daten-Tabellen eine Zeile, die sagt anzeigen von 1 bis 25 Datensätze, die aus insgesamt 25 Einträge. Ich bin schlecht nun fest. 🙁