Laden Sie die Ajax-Anfrage mit neuen Parametern neu
Lesezeit: 4 Minuten
Muflix
Ich erhalte Tabellendaten aus der Datenbank per AJAX-Anfrage. Und ich muss die Datenparameter in der AJAX-Anforderung ändern und die Tabelle aktualisieren.
Aber nach dem Neuladen von AJAX wird die ursprüngliche Anfrage an den Server gesendet und neue Parameterwerte werden ignoriert. Ich habe versucht, die Daten über Funktion, globale Variable und Browserspeicherung an die Anfrage zu übergeben, aber keiner der Ansätze funktioniert. Im Internet finde ich Lösung mit
aoData.push()
Funktion, aber ich weiß nicht, wie man es benutzt.
Meine Version von jQuery DataTables ist 1.10.7.
Ich habe auch versucht, die Tabelle mit diesem Code zu zerstören und neu zu erstellen:
Das Parameterwörterbuch enthält einen Nulleintrag für den Parameter „draw“ vom Typ „System.Int32“, der keine Nullwerte zulässt.
Gyrocode.com
Sie können Funktion als Wert für verwenden ajax.data Option wie unten gezeigt.
Auf diese Weise wird Ihr Code jedes Mal ausgeführt, wenn der Client eine Anfrage an den Server stellt, und nicht einmal wie bei Ihrem ursprünglichen Code.
Dann benutze $('#table1').DataTable().ajax.reload() wenn Sie die Tabelle neu laden müssen oder $('#table1').DataTable().ajax.reload(null, false) wenn Sie die aktuelle Seite nicht zurücksetzen möchten. Sehen ajax.reload() für mehr Informationen.
Vielen Dank. Beachten Sie, dass die obige Methode auch zum Aktualisieren von Parametern für Aufrufe von table.ajax.reload() funktioniert, nicht nur für die Tabelleninitialisierung. Dies gilt auch dann, wenn Sie jquery (oder Javascript) verwenden, um Parameter aus dem aktuellen Inhalt des Formularelements und/oder Modellwerten über Razor zu aktualisieren. Getestet in DataTables v1.10+ mit guten Ergebnissen. 🙂
– IdahoB
16. August 2018 um 17:45 Uhr
Es funktioniert bei mir nicht, ich bekomme: Uncaught TypeError: Cannot read property ‘reload’ of undefined
– Michael Fieber
14. Februar 2019 um 20:31 Uhr
@MichaelFever, stellen Sie sicher, dass Sie verwenden DataTable() und nicht dataTable().
Dies ist eine andere Lösung. Fügen Sie Ihre Parameter in den Standarddatentabellenparametern hinzu.
Wie wird die Ajax-URL einer Datentabelle dynamisch festgelegt?
Das ist genau das, was ich brauchte! Konnte die serverseitige Verarbeitungslogik (serverSide: true} vermeiden, indem ich diese Lösung verwendete, als ich meine eigene Paginierungslogik erstellte, um die gleichzeitige Anzeige von Nummerndatensätzen zu steuern, danke!
– Tempel
25. September 2020 um 20:51 Uhr
Okay, ich habe die Lösung gefunden, bei der Neuinitialisierung der Tabelle müssen alle Einstellungen erneut angegeben werden, da sie sonst von den Standardeinstellungen übernommen werden. so ist der endgültige Code
$('#table1').DataTable({
"iDisplayStart": 0,
"iDisplayLength": 50,
"bPaginate": true,
"bSort": false,
"serverSide": true,
/* and all others settings others than default */
"ajax":
{
"url": "Home/Search",
"type": "POST",
"data": {
'searchType': GetSearchType(),
'searchText': GetSearchText()
}
},
"destroy" : true /* <---- this setting reinitialize the table */
}).
aber wenn jemand eine bessere Lösung findet, teilen Sie sie bitte mit.
Vielleicht hat der ‘destroy’-Parameter in früheren Versionen funktioniert, aber zumindest in den Versionen 1.10 oder neuer von DataTables funktioniert er nicht mehr (daher die Ablehnung – sorry!). Die Verwendung einer Funktion, wie in der ersten Antwort beschrieben, funktioniert jedoch.
AJAX lädt Header beim ersten Laden der Seite als Variable. Wenn Sie die Überschriften geändert und etwas sortiert/gesucht haben. Neue Header werden nicht gesetzt, es sei denn, Sie setzen neue Header mit “beforeSend”. Ich habe den Beispielcode bereitgestellt.
Versuche dies,
$scope.dtOptions = DTOptionsBuilder.newOptions()
.withOption('ajax', {
url: 'url',
'beforeSend': function (request) {
request.setRequestHeader("Authorization","eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9");
request.setRequestHeader("Subscription-Key","1d64412357444dc4abc5fe0c95ead172");
} ,
//},
type: "POST",
cache: false, // It will not use cache url
})
12278500cookie-checkLaden Sie die Ajax-Anfrage mit neuen Parametern neuyes