fnServerData
ist eine interne Funktion in DataTables, die mit Ihrem eigenen Ajax-Handler überschrieben werden kann. In diesem Fall mit einer komfortablen jQuery-Funktion Read more here
Die Parameter sind in DataTables Kern definiert und sind in dieser bestimmten Reihenfolge erforderlich.
sSource
ist die URL, unter der sich Ihre Datenquelle befindet. Es wird auf initialization auf den Wert in sAjaxSource
festgelegt. In diesem Fall xhr.php
aoData
ist ein Array von Parametern, die an die Datenquelle gesendet werden. Dieser enthält standardmäßig paginationinfo, sortinginfo, filterinfo usw. (die automatisch vom Kern gesetzt werden), auf die Ihr dataSource-Skript reagieren soll. (Beispiel: Begrenzen Sie eine SQL-Abfrage auf Seitengröße usw.) Um weitere Informationen an Ihre Anfrage zu senden, können Sie andere Werte auf aoData
schieben. Wie so:
"fnServerData": function (sSource, aoData, fnCallback, oSettings) {
aoData.push({ "name": "Input1", "value": $("#data1").val() });
aoData.push({ "name": "Input2", "value": $("#data2").val() });
oSettings.jqXHR = $.ajax({
(Werden die Werte von zwei Eingabefelder erhalten namens data1 und Daten2 über jQuery von einer Form und sie in der POST als Input1 und Input2)
Wenn Sie Möchten Sie wissen, was gesendet wird, können Sie die POST-Daten mit der Firebugs-Konsole anzeigen oder den Typ in GET
ändern. Dann sehen Sie die übergebenen Parameter in der Adressleiste (Achtung, dies kann eine sehr lange Zeichenfolge sein, die abgeschnitten werden könnte).
fnCallback
ist auch eine eingebaute Funktion des Kerns, die überschrieben werden können, ist aber nicht in diesem Fall. Sie sollten eine eigene Funktion bereitstellen, wenn Sie nach dem Empfang der Daten eine Nachbearbeitung in JS durchführen möchten.
In Bezug auf den zweiten Teil Ihrer Frage: Natürlich müssen Sie nicht PHP oder JSP verwenden. Jede serverseitige Sprache, die JSON-Daten dynamisch bereitstellen kann, ist in Ordnung (Phyton, Node, Sie nennen sie ...)
Wenn Sie ASP.NET MVC verwenden und Ihre Controller-Aktion einen Parameter vom Typ jQueryDataTableParamModel hat, berücksichtigen Sie Sie müssen eine untergeordnete Klasse (eine Klasse, die sich von jQueryDataTableParamModel erstreckt) erstellen und eine Eigenschaft für jedes zusätzliche Feld hinzufügen, das Sie vom Client an den Server senden. In diesem Fall sollten Sie zwei Eigenschaften hinzufügen: Input1 und Input2. Auf diese Weise wird ASP.NET MVC die Werte automatisch binden. –
Danke für die Info. Leider weiß ich nicht viel über ASP.NET MVC :-(Aber ich bin mir sicher, dass dies hilfreich ist! – mainguy
großartige Erklärung. Danke – Richie