2012-04-27 24 views
6

C'è un modo per specificare il tempo massimo di esecuzione di un post Ajax sul server, quindi se il server non risponde, quindi continua a provare per 10 secondi e poi continua con il resto del codice ??Come impostare il tempo massimo di esecuzione per un post 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 
    . 
    . 
    .   
} 

risposta

15

Uso timeout:

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

Tuttavia, alert(returned_value); eseguirà subito dopo la chiamata (non attendere la chiamata alla fine).

+1

Attenzione, questo non riproverà. Ci proveremo solo una volta. – Alexander

+0

non è possibile utilizzare il timeout se si utilizza async: false. – firefields

4

È possibile impostare il valore di timeout per la richiesta ajax.

timeout

impostare un timeout (in millisecondi) per la richiesta. Questo sostituirà qualsiasi timeout globale impostato con $ .ajaxSetup(). Il periodo di timeout inizia nel punto in cui viene effettuata la chiamata $ .ajax; se più richieste sono nello stato e il browser non ha connessioni disponibili, è possibile per una richiesta di timeout prima che possa essere inviata. In jQuery 1.4.xe di seguito, l'oggetto XMLHttpRequest si troverà in uno stato non valido se la richiesta scade; l'accesso a qualsiasi membro dell'oggetto può generare un'eccezione . Solo in Firefox 3.0+, le richieste di script e JSONP non possono essere annullate da un timeout ; lo script verrà eseguito anche se arriva dopo lo periodo di timeout.

Ecco un esempio:

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

come è possibile per favore dimostrarlo? – themis

7

La documentazione API JQuery dice come impostare un "timeout".

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

Mentre altre risposte qui sono corrette, imparando a controllare la documentazione per te è più importante che sapere solo questa risposta.

0

Impostare un timeout (in millisecondi) per la richiesta. Ciò sostituirà qualsiasi timeout globale impostato con $ .ajaxSetup(). Il periodo di timeout inizia nel momento in cui viene effettuata la chiamata $ .ajax; se sono in corso diverse altre richieste e il browser non ha connessioni disponibili, è possibile che una richiesta scada prima che possa essere inviata. In jQuery 1.4.xe sotto, l'oggetto XMLHttpRequest sarà in uno stato non valido se la richiesta scade; l'accesso a qualsiasi membro dell'oggetto può generare un'eccezione. Solo in Firefox 3.0+, le richieste di script e JSONP non possono essere annullate da un timeout; lo script verrà eseguito anche se arriva dopo il periodo di timeout.

Problemi correlati