2012-06-07 6 views
15

mam ten kod:Przechwytywanie 404 stan z jQuery AJAX

$.ajax({ cache: false, 
    url: "/Admin/Contents/GetData", 
    data: { accountID: AccountID }, 
    success: function (data) { 
     $('#CityID').html(data); 
    }, 
    error: function (ajaxContext) { 
     alert(ajaxContext.responseText) 
    } 
}); 

jestem nadal mylić o ajaxContext i jak uchwycić 404 kody powrotne. Mam jednak inne pytanie. Czytam coś o kodowaniu z powodzeniem i nie i nie używam już błędów w najnowszych wersjach jQuery.

Czy powinienem zmienić kod, aby użyć zakończone i nieudane. Jak zatem mógłbym sprawdzić 404?

+0

Jak to będzie działać przy użyciu .fail()? –

Odpowiedz

24

Wymień funkcji błędu w następujący sposób ...

error:function (xhr, ajaxOptions, thrownError){ 
    if(xhr.status==404) { 
     alert(thrownError); 
    } 
} 
+0

Poprzednio miałem błąd: function (jqXHR, textStatus, errorThrown). jest poprawne ajaxOptions. Czy powinien to być tekstStatus? – Alan2

+0

Działa dla mnie, nie rozumiem, dlaczego nie, ale chce być inaczej poinformowany. – JayTee

+3

Pamiętaj tylko, że to nie zadziała w przypadku wywołań międzydomenowych. Spowoduje to awarię w trybie cichym i nie zostaną wykonane parametry zwrotne "kompletny" lub "błąd". – Meogi

3

Erros 404 będzie obsługiwane przez anonimową funkcję podłączoną do właściwości error. Cokolwiek innego niż pomyślne żądanie HTTP do adresu URL (tj. 2xx) wywoła metodę błędu. Następujące będzie pracować dla celów:

error : function(jqXHR, textStatus, errorThrown) { 
    if(jqXHR.status == 404 || errorThrown == 'Not Found') 
    { 
     console.log('There was a 404 error.'); 
    } 
} 

Kiedy odnoszą się one do usuwania funkcji success i error w dokumentacji jQuery, oni odnosząc się do tych z klasy jqXHR, a nie właściwości $.ajax().

+0

Ale czy kodowanie tej anonimowej funkcji przez JayTee jest poprawne? Moja poprzednia próba wystarczy umieścić zmienną ajaxContent w paranthasis po funkcji. – Alan2

+0

Funkcja wywołania zwrotnego przyjmuje trzy argumenty: obiekt jqXHR (w jQuery 1.4.x, XMLHttpRequest), ciąg opisujący typ błędu, który wystąpił oraz opcjonalny obiekt wyjątku. Gdy wystąpi błąd HTTP, ErrorThrown otrzymuje tekstową część statusu HTTP, na przykład "Nie znaleziono" lub "Wewnętrzny błąd serwera". – BenM

+0

Edytowałem swoją odpowiedź, aby dołączyć poprawną składnię ... – BenM