Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

632
Vistas
Cómo atrapar la red::ERR_CONNECTION_REFUSED

¿Hay alguna manera de capturar failed to load resource: net::ERR_CONNECTION_REFUSED , lo he intentado:

 try { $.post('',{},function(res) { }).fail(function (xhr, textStatus, errorThrown) { xhr.textStatus = textStatus; xhr.errorThrown = errorThrown; console.log('fail',xhr); // how to get the 'ERR_CONNECTION_REFUSED' or anything else as string? }); } catch(e) { console.log('catch',e); }

La función de falla podría detectar, pero no obtuve información sobre el error, ya sea:

  • ERR_NOMBRE_NO_RESUELTO
  • ERR_CONEXIÓN_RECHAZADA
  • ERR_BLOCKED_BY_CLIENTE
  • ERR_TUNNEL_CONNECTION_FAILED (al usar proxy)

o cualquier otra cosa... la pregunta sería, ¿cómo obtener el tipo de error?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Incluso traté de lograr el objetivo usando javascript XMLHttpRequest()

 var xhttp= new XMLHttpRequest(); try{ xhttp.onreadystatechange = function() { console.log(xhttp); if (xhttp.readyState == 4 && xhttp.status == 0) { alert("Unknown Error Occured. Server response not received."); } }; xhttp.open("POST", "http://localhost:8080/data", true); xhttp.send(); }catch(e){ console.log('catch', e); }

El fragmento anterior solo brinda un manejo genérico de errores, mientras que no obtengo la razón exacta detrás del error. La sentencia try...catch no detecta nada, porque ninguna de las funciones dentro del bloque try genera excepciones. Parece que XMLHttpRequest se está ejecutando en un subproceso en segundo plano, por lo que su error de tiempo de ejecución no se puede capturar.

Como jQuery es una biblioteca que en realidad es un javascript, también se comportará igual para $.post() porque $.post() también usa XMLHttpRequest detrás de la cortina.

A continuación se muestra la versión de jQuery, que también manejará el error genérico, ya que no podemos saber exactamente el motivo del error.

 try { $.post('http://localhost:8080/data', {}, function(res) {}).fail(function() { alert("Unknown Error Occured. Server response not received."); }); } catch (e) { console.log('catch', e); }
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Conclusión

Como javascript XMLHttpRequest() todavía no es lo suficientemente eficiente para manejar diferentes estados de error, no podemos saber el motivo exacto detrás del error de red para las solicitudes AJAX. Solo podemos capturar errores genéricos y algunos otros códigos de estado conocidos como

"404" para el archivo no encontrado

"500" para el servidor no responde

Se puede saber más en https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

Actualización: Ha pasado mucho tiempo desde la última vez que actualicé esta publicación. Vi pocas respuestas que intentan lograr objetivos similares pero aún con muy poco éxito. Como se mencionó en algunas de las respuestas en este hilo, también podemos usar la función de devolución de llamada XMLHttpRequest.onerror para detectar algunos errores genéricos, pero si todavía está trabajando con IE, entonces tal vez no funcione.

over 4 years ago · Santiago Trujillo Denunciar

0

var xhttp= new XMLHttpRequest(); xhttp.onreadystatechange = function() { console.log(xhttp); xhttp.onerror = function(e){ alert("Unknown Error Occured. Server response not received."); }; xhttp.open("POST", "http://localhost:8080/data", true); xhttp.send();

Una forma alternativa de obtener errores que podría ser más fácil de entender más adelante es el controlador de eventos onerror. Por lo que he visto, no te dará más información útil que la solución de Kiran.

over 4 years ago · Santiago Trujillo Denunciar

0

Tienes acceso en línea/fuera de línea en Chrome.

 var _Network_state = true; function updateIndicator() { // Show a different icon based on offline/online if (navigator.onLine) { // true|false // ... do other stuff _Network_state = true; } else { // ... do other stuff _Network_state = false; } console.info(_Network_state ? 'Online' : 'Offline'); } // Update the online status icon based on connectivity window.addEventListener('online', updateIndicator); window.addEventListener('offline', updateIndicator); updateIndicator();

Antes de llamar a ajax, inspeccione " _Network_state "

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda