Wymagane parametry w error
funkcji Ajax to jqXHR, exception
i możesz jej używać jak poniżej:
$.ajax({
url: 'some_unknown_page.html',
success: function (response) {
$('#post').html(response.responseText);
},
error: function (jqXHR, exception) {
var msg = '';
if (jqXHR.status === 0) {
msg = 'Not connect.\n Verify Network.';
} else if (jqXHR.status == 404) {
msg = 'Requested page not found. [404]';
} else if (jqXHR.status == 500) {
msg = 'Internal Server Error [500].';
} else if (exception === 'parsererror') {
msg = 'Requested JSON parse failed.';
} else if (exception === 'timeout') {
msg = 'Time out error.';
} else if (exception === 'abort') {
msg = 'Ajax request aborted.';
} else {
msg = 'Uncaught Error.\n' + jqXHR.responseText;
}
$('#post').html(msg);
},
});
DEMO FIDDLE
Parametry
jqXHR:
W rzeczywistości jest to obiekt błędu, który wygląda tak
Możesz również wyświetlić to we własnej konsoli przeglądarki, używając console.log
wewnątrz error
funkcji, takiej jak:
error: function (jqXHR, exception) {
console.log(jqXHR);
// Your error handling logic here..
}
Używamy status
właściwości tego obiektu, aby uzyskać kod błędu, na przykład jeśli otrzymamy status = 404, oznacza to, że nie można znaleźć żądanej strony. W ogóle nie istnieje. Na podstawie tego kodu statusu możemy przekierowywać użytkowników na stronę logowania lub cokolwiek wymaga naszej logiki biznesowej.
wyjątek:
To jest zmienna łańcuchowa, która pokazuje typ wyjątku. Więc jeśli otrzymujemy błąd 404, exception
tekst będzie po prostu „błąd”. Podobnie, możemy otrzymać „timeout”, „abort” jako inne teksty wyjątków.
Wycofanie Wskazówka:jqXHR.success()
, jqXHR.error()
, i jqXHR.complete()
wywołania zwrotne są przestarzałe jak jQuery 1.8. Aby przygotować swój kod do ich ostatecznego usunięcia, należy użyć jqXHR.done()
, jqXHR.fail()
i jqXHR.always()
zamiast tego.
Tak więc, jeśli używasz jQuery 1.8 lub nowszego , będziemy musieli zaktualizować logikę funkcji sukcesu i błędu, taką jak: -
var jqxhr = $.ajax("some_unknown_page.html")
.done(function (response) {
$('#post').html(response.responseText);
})
.fail(function (jqXHR, exception) {
var msg = '';
if (jqXHR.status === 0) {
msg = 'Not connect.\n Verify Network.';
} else if (jqXHR.status == 404) {
msg = 'Requested page not found. [404]';
} else if (jqXHR.status == 500) {
msg = 'Internal Server Error [500].';
} else if (exception === 'parsererror') {
msg = 'Requested JSON parse failed.';
} else if (exception === 'timeout') {
msg = 'Time out error.';
} else if (exception === 'abort') {
msg = 'Ajax request aborted.';
} else {
msg = 'Uncaught Error.\n' + jqXHR.responseText;
}
$('#post').html(msg);
})
.always(function () {
alert("complete");
});
Mam nadzieję, że to pomoże!
dataType
nie jestdatatype
.