jQuery AJAX manejo de errores (códigos de estado HTTP)

Tenemos una API que utiliza códigos de estado HTTP adecuados para errores, y responde con respuestas codificadas en JSON y el encabezado de Content-Type adecuado. Mi situación es que jQuery.ajax() desencadena la callback de error cuando encuentra un estado de error HTTP, y no la callback correcta, por lo que incluso cuando tenemos una respuesta JSON inteligible, debemos recurrir a algo como esto:

 $.ajax({ // ... success: function(response) { if (response.success) { console.log('Success!'); console.log(response.data); } else { console.log('Failure!'); console.log(response.error); } }, error: function(xhr, status, text) { var response = $.parseJSON(xhr.responseText); console.log('Failure!'); if (response) { console.log(response.error); } else { // This would mean an invalid response from the server - maybe the site went down or whatever... } } }); 

¿Hay un mejor paradigma que realizar el mismo manejo de errores en dos puntos en cada llamada jQuery.ajax() ? No es muy SECO, y estoy seguro de que en estos casos me he perdido algo de buenas prácticas de manejo de errores.

Echa un vistazo a jQuery.ajaxError()

Captura los errores globales de Ajax que puede manejar de varias maneras:

 if (jqXHR.status == 500) { // Server side error } else if (jqXHR.status == 404) { // Not found } else if { ... 

Alternativamente, puede crear un objeto de controlador de errores global y elegir si desea llamarlo:

 function handleAjaxError(jqXHR, textStatus, errorThrown) { // do something } $.ajax({ ... success: function() { ... }, error: handleAjaxError });