2012-04-27 29 views
6

¿Hay alguna forma de especificar el tiempo máximo de ejecución de una publicación de Ajax en el servidor, de modo que si el servidor no responde, entonces siga intentándolo durante 10 segundos y luego continúe con el resto del código?¿Cómo establecer el tiempo máximo de ejecución para la publicación ajax con jQuery?

Function doajaxPost(){ 
    var returned_value=""; 

    // #############I NEED THIS CODE TO TRY TO POST THE DATA TO THE SERVER AND KEEP 
    // #############TRYING FOR 10 SECONDS AND THEN CONTINUE WITH THE REST OF THE CODE. 
     jQuery.ajax({ 
      url: 'ajaxhandler.php', 
      success: function (result) {        
       returned_value=result; 
      }, 
      async: false 
     }); 
    // ################################################### 

    alert(returned_value); 

    some other code 
    . 
    . 
    .   
} 

Respuesta

15

Uso timeout:

jQuery.ajax({ 
    url: 'ajaxhandler.php', 
    success: function (result) {        
     returned_value=result; 
    }, 
    timeout: 10000, 
    async: false 
}); 

Sin embargo, alert(returned_value); ejecutará inmediatamente después de su llamada (no esperar a que la llamada termine).

+1

Tenga en cuenta que esto no se volverá a intentar. Solo lo probará una vez. – Alexander

+0

no puede utilizar el tiempo de espera si usa async: falso. – firefields

4

Puede establecer el valor de tiempo de espera para su solicitud de AJAX.

timeout

Establecer un tiempo de espera (en milisegundos) para la solicitud. Esto anulará cualquier tiempo de espera global configurado con $ .ajaxSetup(). El período de tiempo de espera comienza en en el punto en que se realiza la llamada $ .ajax; si hay varias solicitudes más en el progreso de y el navegador no tiene conexiones disponibles, es posible solicitar que se agote el tiempo de espera antes de poder enviarlo. En jQuery 1.4.x y a continuación, el objeto XMLHttpRequest estará en un estado no válido si se agota el tiempo de espera de la solicitud ; el acceso a cualquier miembro del objeto puede arrojar una excepción . Solo en Firefox 3.0+, las solicitudes de script y JSONP no pueden ser canceladas por un tiempo de espera; la secuencia de comandos se ejecutará incluso si llega después de el período de tiempo de espera.

Aquí se muestra un ejemplo:

$.ajax({ 
    url: "ajaxhandler.php", 
    ... 
    timeout: 10000, 
    ... 
}); 
+0

¿cómo es esto posible, por favor, demuéstralo? – themis

7

La documentación de la API jQuery explica cómo configurar un "tiempo de espera".

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

Mientras que otras respuestas aquí son correctos, el aprendizaje para comprobar la documentación del mismo, es más valioso que acaba de conocer esta respuesta.

0

Establezca un tiempo de espera (en milisegundos) para la solicitud. Esto anulará cualquier tiempo de espera global establecido con $ .ajaxSetup(). El período de tiempo de espera comienza en el punto en que se realiza la llamada $ .ajax; si hay varias solicitudes más en curso y el navegador no tiene conexiones disponibles, es posible que una solicitud expire antes de poder enviarse. En jQuery 1.4.xy siguientes, el objeto XMLHttpRequest estará en un estado no válido si la solicitud expira; el acceso a cualquier miembro del objeto puede arrojar una excepción. Solo en Firefox 3.0+, las solicitudes de script y JSONP no se pueden cancelar por un tiempo de espera; la secuencia de comandos se ejecutará incluso si llega después del período de tiempo de espera.

Cuestiones relacionadas