Dank StackOverflow konnte ich den folgenden Code perfekt zum Laufen bringen, aber ich habe eine Folgefrage.
$.get('http://example.com/page/2/', function(data){
$(data).find('#reviews .card').appendTo('#reviews');
});
Mit diesem Code oben konnte meine Website eine zweite Seite mit Artikeln mit der Schaltfläche Mehr laden in WordPress abrufen. Wenn der Site jedoch die Seiten / Ergebnisse ausgehen, stößt ich auf ein kleines Problem. Die Schaltfläche "Mehr laden" bleibt an Ort und Stelle. Es wird weiterhin versucht, Daten abzurufen, auch wenn keine Seiten mehr vorhanden sind.
Wie kann ich diesen Befehl so anpassen, dass ich eine visuelle Antwort anzeigen kann, wenn die .get
Anforderung fehlschlägt oder beispielsweise eine (404) Seite nicht gefunden wird?
Wenn mir jemand mit einem einfachen Beispiel helfen könnte alert("woops!");
, wäre das großartig!
Vielen Dank!
Antworten:
$.get
bietet Ihnen nicht die Möglichkeit, einen Fehlerbehandler festzulegen. Sie müssen$.ajax
stattdessen die Low-Level- Funktion verwenden:$.ajax({ url: 'http://example.com/page/2/', type: 'GET', success: function(data){ $(data).find('#reviews .card').appendTo('#reviews'); }, error: function(data) { alert('woops!'); //or whatever } });
Bearbeiten März '10
Beachten Sie, dass Sie mit dem neuen
jqXHR
Objekt in jQuery 1.5 nach dem Aufruf einen Fehlerhandler festlegen können$.get
:$.get('http://example.com/page/2/', function(data){ $(data).find('#reviews .card').appendTo('#reviews'); }).fail(function() { alert('woops'); // or whatever });
quelle
$.ajaxSetup()
und dasajaxError
globale Ereignis.Wenn Sie einen generischen Fehler wünschen, können Sie alle
$.ajax()
($.get()
darunter verwendeten) Anforderungen einrichten, die jQuery macht, um einen Fehler anzuzeigen$.ajaxSetup()
, zum Beispiel:$.ajaxSetup({ error: function(xhr, status, error) { alert("An AJAX error occured: " + status + "\nError: " + error); } });
Führen Sie dies einfach einmal aus, bevor Sie AJAX-Aufrufe tätigen (keine Änderungen an Ihrem aktuellen Code, kleben Sie dies einfach vorher irgendwo hin). Dadurch wird die
error
Option standardmäßig auf den obigen Handler / die obige Funktion gesetzt. Wenn Sie einen vollständigen$.ajax()
Aufruf getätigt und denerror
Handler angegeben haben, wird das oben Gesagte überschrieben.quelle
console.log("An AJAX error occured: " + status + "\nError: " + error);
Sie können Detailfehler erhalten, indem Sie die responseText-Eigenschaft verwenden.
$.ajaxSetup({ error: function(xhr, status, error) { alert("An AJAX error occured: " + status + "\nError: " + error + "\nError detail: " + xhr.responseText); } });
quelle
Sie können den
.fail()
Rückruf zur Fehlerantwort verketten.$.get('http://example.com/page/2/', function(data){ $(data).find('#reviews .card').appendTo('#reviews'); }) .fail(function() { //Error logic })
quelle