I parametri richiesti in una error
funzione Ajax sono jqXHR, exception
e puoi usarlo come di seguito:
$.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
parametri
jqXHR:
In realtà è un oggetto di errore che è simile a questo
Puoi anche visualizzarlo nella tua console del browser, utilizzando console.log
all'interno della error
funzione come:
error: function (jqXHR, exception) {
console.log(jqXHR);
// Your error handling logic here..
}
Stiamo usando il status
proprietà di questo oggetto per ottenere il codice di errore, come se ottenessimo status = 404 questo significa che non è stato possibile trovare la pagina richiesta. Non esiste affatto. In base a quel codice di stato, possiamo reindirizzare gli utenti alla pagina di accesso o qualunque cosa la nostra logica aziendale richieda.
eccezione:
Questa è una variabile stringa che mostra il tipo di eccezione. Quindi, se otteniamo un errore 404, il exception
testo sarebbe semplicemente "errore". Allo stesso modo, potremmo ottenere "timeout", "interrompere" come altri testi di eccezione.
Deprecazione Avviso: Il jqXHR.success()
, jqXHR.error()
, e jqXHR.complete()
callback sono deprecati come di jQuery 1.8. Per preparare il codice per la loro eventuale rimozione, usare jqXHR.done()
, jqXHR.fail()
e jqXHR.always()
invece.
Quindi, nel caso in cui si utilizzi jQuery 1.8 o versioni successive , sarà necessario aggiornare la logica della funzione di errore e di successo come: -
// 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");
});
Spero che sia d'aiuto!
dataType
èdatatype
.