Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

246
Views
Manejo de errores de Jquery Ajax para ignorar abortado

Quiero tener un método global de manejo de errores para llamadas ajax, esto es lo que tengo ahora:

 $.ajaxSetup({ error: function (XMLHttpRequest, textStatus, errorThrown) { displayError(); } });

Necesito ignorar el error de aborted . errorThrown es nulo y textStatus es error . ¿Cómo verifico aborted ?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Tuve que lidiar con el mismo caso de uso hoy. La aplicación en la que estoy trabajando tiene estas llamadas ajax de larga duración que pueden ser interrumpidas por 1) el usuario navegando o 2) algún tipo de falla temporal de conexión/servidor. Quiero que el controlador de errores se ejecute solo en caso de falla de conexión/servidor y no para que el usuario se vaya.

Primero probé la respuesta de Alastair Pitts, pero no funcionó porque tanto las solicitudes abortadas como la falla de conexión establecieron el código de estado y readyState en 0. Luego, probé la respuesta de sieppl; tampoco funcionó porque en ambos casos, no se da respuesta, por lo tanto, no hay encabezado.

La única solución que funcionó para mí es establecer un oyente para window.onbeforeunload, que establece una variable global para indicar que la página se ha descargado. El controlador de errores puede verificar y solo llamar al controlador de errores solo si la página no se ha descargado.

 var globalVars = {unloaded:false}; $(window).bind('beforeunload', function(){ globalVars.unloaded = true; }); ... $.ajax({ error: function(jqXHR,status,error){ if (globalVars.unloaded) return; } });
over 4 years ago · Santiago Trujillo Report

0

En jQuery moderno, puede verificar si request.statusText es igual a 'abort' :

 error: function (request, textStatus, errorThrown) { if (request.statusText =='abort') { return; } }
over 4 years ago · Santiago Trujillo Report

0

Algo que encontré es que cuando hay una solicitud abortada, el status y/o readyState igual a 0 .

En mi controlador de errores global, tengo una marca en la parte superior del método:

 $(document).ajaxError(function (e, jqXHR, ajaxSettings, thrownError) { //If either of these are true, then it's not a true error and we don't care if (jqXHR.status === 0 || jqXHR.readyState === 0) { return; } //Do Stuff Here });

He encontrado que esto funciona perfectamente para mí. Espero que esto te ayude a ti, o a cualquier otra persona que se encuentre con esto :)

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!