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

282
Views
Establecer tiempo de espera para ajax (jQuery)
$.ajax({ url: "test.html", error: function(){ //do something }, success: function(){ //do something } });

A veces la función de success funciona bien, a veces no.

¿Cómo configuro el tiempo de espera para esta solicitud de ajax? Por ejemplo, 3 segundos, si se agota el tiempo, muestra un error.

El problema es que la solicitud ajax congela el bloque hasta que finaliza. Si el servidor está inactivo por un tiempo, nunca terminará.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Lea la documentación de $.ajax , este es un tema cubierto.

 $.ajax({ url: "test.html", error: function(){ // will fire when timeout is reached }, success: function(){ //do something }, timeout: 3000 // sets timeout to 3 seconds });

Puede ver qué tipo de error se produjo accediendo al parámetro textStatus del error: function(jqXHR, textStatus, errorThrown) . Las opciones son "tiempo de espera", "error", "abortar" y "error de análisis".

over 4 years ago · Santiago Trujillo Report

0

Aquí hay algunos ejemplos que demuestran cómo configurar y detectar tiempos de espera en los paradigmas antiguo y nuevo de jQuery.

Demo en vivo

Promesa con jQuery 1.8+

 Promise.resolve( $.ajax({ url: '/getData', timeout:3000 //3 second timeout }) ).then(function(){ //do something }).catch(function(e) { if(e.statusText == 'timeout') { alert('Native Promise: Failed from timeout'); //do something. Try again perhaps? } });

jQuery 1.8+

 $.ajax({ url: '/getData', timeout:3000 //3 second timeout }).done(function(){ //do something }).fail(function(jqXHR, textStatus){ if(textStatus === 'timeout') { alert('Failed from timeout'); //do something. Try again perhaps? } });​

jQuery <= 1.7.2

 $.ajax({ url: '/getData', error: function(jqXHR, textStatus){ if(textStatus === 'timeout') { alert('Failed from timeout'); //do something. Try again perhaps? } }, success: function(){ //do something }, timeout:3000 //3 second timeout });

Tenga en cuenta que el parámetro textStatus (o jqXHR.statusText ) le permitirá saber cuál fue el error. Esto puede ser útil si desea saber si la falla se debió a un tiempo de espera.

error (jqXHR, estado de texto, error lanzado)

Una función que se llamará si la solicitud falla. La función recibe tres argumentos: el objeto jqXHR (en jQuery 1.4.x, XMLHttpRequest), una cadena que describe el tipo de error que ocurrió y un objeto de excepción opcional, si ocurrió. Los valores posibles para el segundo argumento (además de nulo) son "timeout", "error", "abort" y "parsererror". Cuando se produce un error HTTP, errorThrown recibe la parte textual del estado HTTP, como "No encontrado" o "Error interno del servidor". A partir de jQuery 1.5, la configuración de errores puede aceptar una serie de funciones. Cada función será llamada a su vez. Nota: Este controlador no se llama para secuencias de comandos entre dominios y solicitudes JSONP.

origen: http://api.jquery.com/jQuery.ajax/

over 4 years ago · Santiago Trujillo Report

0

Puede usar la configuración de tiempo de timeout en las opciones de ajax de esta manera:

 $.ajax({ url: "test.html", timeout: 3000, error: function(){ //do something }, success: function(){ //do something } });

Lea todo sobre las opciones de ajax aquí: http://api.jquery.com/jQuery.ajax/

Recuerde que cuando se produce un tiempo de espera, se activa el controlador de error y no el controlador de success :)

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!