Parece que el éxito, el error y las devoluciones de llamada completas solo se activan cuando la solicitud de ajax puede obtener alguna respuesta del servidor.Comprobar el estado de una solicitud jQuery ajax
Así que si apago el servidor, la siguiente devolución de llamada de error no se ejecuta y la solicitud falla silenciosamente.
$.ajax({
type: "GET",
url: "http://localhost:3000/",
dataType: "script",
success: function() {
alert("success");
},
error: function() {
alert("error");
}
});
¿Cuál es la mejor manera de lanzar un error cuando el servidor no puede ser alcanzado en absoluto.
Edición - Por lo que he intentado y leído, parece que el manejo de errores incorporado de jQuery no funciona con JSONP, o dataType: "script". Así que voy a intentar configurar un tiempo de espera manual.
Editar - Hice un poco más de investigación y parece que no solo no funciona la devolución de llamada de error ajax, pero no se puede abortar una solicitud ajax con script dataType o jsonp, y esas solicitudes ignoran la configuración de tiempo de espera.
Existe una alternativa: el complemento jquery-jsonp, pero usa iframes ocultos que prefiero evitar. Así que me he decidido a crear un tiempo de espera manual como se sugiere a continuación. No puede cancelar la solicitud si se agota el tiempo de espera, lo que significa que la secuencia de comandos aún se puede cargar incluso después del tiempo de espera, pero al menos algo se activará si el servidor no está disponible.
Jquery de ajax tiene incorporado el manejo de errores (ver mi respuesta a continuación) puede usar ajaxsetup para aplicar estas opciones. – Sphvn