20 Stimmen

JQuery $.get oder $.post zum Auffangen von Seitenladefehlern (z. B. 404)

Wie fängst du Serverfehler oder 404 Seiten nicht gefunden ab, wenn du $.get oder $.post verwendest?

Zum Beispiel:

$.post("/myhandler", { value: 1 }, function(data) {
  alert(data);
});

Das wird überhaupt nichts tun, wenn ein Serverfehler beim Laden von "/myhandler" auftritt oder wenn es nicht gefunden wird.

Wie kannst du dich benachrichtigen lassen, wenn ein Fehler auftritt?

59voto

Roberto Arosemena Punkte 1100

Du könntest tun

$.post("/myhandler", { value: 1 }, function(data) {
  alert(data);
}).fail(function(){ 
  // Fehler hier behandeln
});

fail wird aufgerufen, wenn ein Fehler auftritt

25voto

Reigel Punkte 62704

Verwenden Sie den error-Handler bei $.ajax()

$.ajax({
    url: "/myhandler", 
    data: {value: 1},
    type: 'post',
    error: function(XMLHttpRequest, textStatus, errorThrown){
        alert('Status: ' + XMLHttpRequest.status + ', Status-Text: ' + XMLHttpRequest.statusText);
    },
    success: function(data){}
});

Demo

6voto

mekwall Punkte 27744

Die anderen Antworten sind alle schön und gut, aber es gibt alternative Lösungen, nämlich .ajaxSetup, .ajaxError und andere Ajax-Ereignishandler (überprüfen Sie die ajaxSetup-Dokumentationsseite für weitere Informationen).

Zum Beispiel können Sie mit .ajaxError einen globalen Handler für alle Ihre Ajax-Fehler von .post, .get, .getJSON und .ajax für eine bestimmte Gruppe von Elementen einrichten.

$(selector).ajaxError(function(event, xhr, ajaxOptions, errorThrown) {
    // Behandeln Sie hier den Ajax-Fehler
});

2voto

coreyward Punkte 72986

Verwenden Sie stattdessen $.ajax und verwenden Sie den error Rückruf.

http://api.jquery.com/jQuery.ajax/

2voto

guest271314 Punkte 1

Versuchen Sie, $.ajaxSetup() zu verwenden, die statusCode Option

$.ajaxSetup({
   statusCode : {
     // aufgerufen bei `$.get()`, `$.post()`, `$.ajax()`
     // wenn der Antwortstatuscode `404` ist
     404 : function (jqxhr, textStatus, errorThrown) {
             console.log(textStatus, errorThrown);
           }
     }
 });

// $.get("/pfad/zur/url/");
// $.post("/pfad/zur/url/");
// $.ajax({url:"/pfad/zur/url/"})

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X