Hoy vamos a aprender cómo podemos controlar los errores de todas las llamadas que aparecen en nuestro sitio web y que hayan sido creadas con un AJAX.

Para ello vamos a usar un interceptor para guardar las llamadas con error y las vuelve a ejecutar después de 30 segundos en JavaScript/jQuery:
Paso 1: Configura el archivo HTML y carga las bibliotecas necesarias
Primero, configura tu archivo HTML y asegúrate de que estés cargando jQuery, ya que utilizaremos jQuery para realizar llamadas AJAX y manejar errores.
<!DOCTYPE html>
<html>
<head>
<title>Tutorial de Interceptor AJAX</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<!-- Tu contenido HTML aquí -->
<button id="ejecutarLlamadas">Ejecutar Llamadas</button>
<script src="tu_script.js"></script>
</body>
</html>
Paso 2: Crea el archivo JavaScript (tu_script.js)
Ahora, crea un archivo JavaScript donde implementarás el interceptor y la lógica para volver a ejecutar las llamadas con error después de 30 segundos.
// Paso 1: Crea una estructura de datos para almacenar las llamadas fallidas
var llamadasFallidas = [];
// Paso 2: Intercepta errores de AJAX y almacena las llamadas fallidas
$(document).ajaxError(function (event, jqXHR, settings, thrownError) {
// Almacena la llamada fallida en el array
llamadasFallidas.push({
settings: settings,
error: thrownError
});
});
// Paso 3: Función para reintentar llamadas fallidas después de 30 segundos
function reintentarLlamadasFallidas() {
setTimeout(function () {
for (var i = 0; i < llamadasFallidas.length; i++) {
var llamadaFallida = llamadasFallidas[i];
$.ajax(llamadaFallida.settings)
.done(function (data) {
// Llamada exitosa, puedes realizar acciones adicionales aquí si es necesario
})
.fail(function (jqXHR, textStatus, errorThrown) {
// Maneja el error si la llamada aún falla después del reintento
console.error("Error al reintentar llamada:", errorThrown);
});
}
}, 30000); // 30 segundos (30000 ms)
}
// Paso 4: Manejar el evento del botón para ejecutar las llamadas
$(document).ready(function () {
$("#ejecutarLlamadas").click(function () {
// Aquí puedes realizar tus llamadas AJAX
// Ejemplo de llamada AJAX:
$.ajax({
url: "tu_url",
type: "GET",
success: function (data) {
// Maneja la respuesta exitosa aquí
},
error: function (jqXHR, textStatus, errorThrown) {
// Maneja el error de la llamada AJAX aquí
console.error("Error en la llamada AJAX:", errorThrown);
}
});
});
});
Paso 3: Uso del tutorial
- Agrega tus llamadas AJAX dentro del evento del botón
#ejecutarLlamadas. - Cuando una llamada AJAX falla, se almacenará en
llamadasFallidas. - Después de 30 segundos, las llamadas almacenadas en
llamadasFallidasse reintentarán automáticamente. - Puedes personalizar las llamadas AJAX según tus necesidades específicas dentro de la función
$.ajax.
Este tutorial te proporciona una estructura básica para interceptar y reintentar llamadas con error después de 30 segundos. Puedes expandirlo y adaptarlo según los requisitos de tu proyecto, como implementar lógica de renovación de tokens o notificaciones adicionales.

Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.