web-dev-qa-db-de.com

jQuery $ .get oder $ .post, um den Fehler beim Laden der Seite abzufangen (zB 404)

Wie können Sie einen Serverfehler oder eine nicht gefundene 404-Seite abfangen, wenn Sie $ .get oder $ .post verwenden?

Zum Beispiel:

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

Das wird absolut nichts tun, wenn ein Serverfehler beim Laden von "/ myhandler" auftritt oder wenn er nicht gefunden wird.

Wie können Sie sich benachrichtigen lassen, wenn ein Fehler auftritt?

16
Aximili

benutze error handler auf $.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

23
Reigel

du könntest es tun

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

fail wird aufgerufen, wenn ein Fehler vorliegt

38

Die anderen Antworten sind Nice und alle, aber es gibt alternative Lösungen, nämlich .ajaxSetup , .ajaxError und andere Ajax-Ereignishandler (weitere Informationen finden Sie auf der AjaxSetup-Dokumentseite).

Mit .ajaxError können Sie beispielsweise einen globalen Handler für alle Ihre Ajax-Fehler aus .post, .get, .getJSON und .ajax für einen bestimmten Satz von Elementen einrichten.

$(selector).ajaxError(function(event, xhr, ajaxOptions, errorThrown) {
    // handle ajax error here
});
5
mekwall

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

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

2
coreyward

Versuchen Sie es mit der Option $.ajaxSetup() , stausCode

$.ajaxSetup({
   statusCode : {
     // called on `$.get()` , `$.post()`, `$.ajax()`
     // when response status code is `404`
     404 : function (jqxhr, textStatus, errorThrown) {
             console.log(textStatus, errorThrown);
           }
     }
 });

// $.get("/path/to/url/");
// $.post("/path/to/url/");
// $.ajax({url:"/path/to/url/"})
1
guest271314