Os parâmetros necessários em uma error
função Ajax são jqXHR, exception
e você pode usá-lo como abaixo:
$.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
Parâmetros
jqXHR:
Na verdade, é um objeto de erro que se parece com isso
Você também pode ver isso no seu próprio console do navegador, usando console.log
a error
função como:
error: function (jqXHR, exception) {
console.log(jqXHR);
// Your error handling logic here..
}
Estamos usando a status
propriedade desse objeto para obter o código de erro, como se obtivermos status = 404, isso significa que a página solicitada não pôde ser encontrada. Não existe. Com base nesse código de status, podemos redirecionar os usuários para a página de login ou o que nossa lógica de negócios exigir.
exceção:
Esta é uma variável de sequência que mostra o tipo de exceção. Portanto, se estivermos recebendo um erro 404, o exception
texto seria simplesmente 'erro'. Da mesma forma, podemos obter 'timeout', 'abort' como outros textos de exceção.
Deprecation Aviso: A jqXHR.success()
, jqXHR.error()
, e jqXHR.complete()
chamadas de retorno são obsoleto a partir do jQuery 1.8. Para preparar o código para a sua eventual remoção, use jqXHR.done()
, jqXHR.fail()
e jqXHR.always()
em vez disso.
Portanto, caso você esteja usando o jQuery 1.8 ou superior , precisaremos atualizar a lógica da função de sucesso e erro, como:
// Assign handlers immediately after making the request,
// and remember the jqXHR object for this request
var jqxhr = $.ajax("some_unknown_page.html")
.done(function (response) {
// success logic here
$('#post').html(response.responseText);
})
.fail(function (jqXHR, exception) {
// Our error logic here
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");
});
Espero que ajude!
dataType
nãodatatype
.