2010-03-24 5 views
57

Ho ricevuto un bug report che non posso duplicare, ma il timeout della chiamata ajax è l'ipotesi migliore corrente.JQuery valore di timeout predefinito chiamata ajax

Quindi sto cercando di trovare il valore predefinito per il timeout di una chiamata jQuery $.ajax(). Qualcuno ha un'idea? Impossibile trovarlo nella documentazione di jQuery.

Grazie in anticipo, Marcus

+1

Hmm, penso che questo sia specifico per il browser. –

+1

http://stackoverflow.com/questions/1342310/where-can-i-find-the-default-timeout-settings-for-all-browsers –

+0

http://stackoverflow.com/questions/5798707/browser-timeouts –

risposta

36

Non sembra essere un valore predefinito standardizzato. Ho l'impressione che il valore predefinito sia 0 e che l'evento di timeout sia totalmente dipendente dal browser e dalle impostazioni di rete.

Per IE, esiste una proprietà di timeout per XMLHTTPRequests here. Il valore predefinito è nullo e si dice che lo stack di rete rischia di essere il primo a timeout (che sarà non generare un evento ontimeout a proposito).

+0

Quindi jQuery in pratica non usa valore predefinito per questo. Il problema è stato segnalato su Safari. Immagino che proverò a forzare un valore di timeout piuttosto lungo e spero per il meglio ... Grazie! – Marcus

+0

@Marcus: ha funzionato davvero? Non riesco a trovare se il timeout sostituisce sempre il valore di timeout del browser (anche se il valore di timeout ajax è maggiore di quello del browser) –

+0

@Pekka: qualche idea su questo? http://stackoverflow.com/q/24526201/759452 –

16

Come parte, quando ho provato a diagnosticare un errore simile, mi sono reso conto che la chiamata di errore ajax di jquery restituisce uno stato di "timeout" se non è riuscito a causa di un timeout.

Ecco un esempio:

$.ajax({ 
    url: "/ajax_json_echo/", 
    timeout: 500, 
    error: function(jqXHR, textStatus, errorThrown) { 
     alert(textStatus); // this will be "timeout" 
    } 
}); 

Here it is on jsfiddle.

+0

Sì, guarda tutti i tipi di errore http://stackoverflow.com/questions/3543683/determine-if-ajax-error-is-a-timeout –

4

non esiste un timeout, per impostazione predefinita.

+2

Puoi condividere qualche fonte che supporta il tuo reclamo. – Panther

+0

L'ho appena provato e posso confermarlo. –

+2

Come si può verificare l'assenza di timeout? Di default potrebbe essere molto lungo – Kaktus

0

La proprietà XMLHttpRequest.timeout rappresenta un numero di millisecondi che una richiesta può richiedere prima che venga automaticamente interrotta. Il valore predefinito è 0, il che significa che lo non è il timeout. Una nota importante del timeout non deve essere utilizzata per le richieste sincrone XMLHttpRequests, utilizzate in un ambiente di documenti o genererà un'eccezione InvalidAccessError. Non è possibile utilizzare un timeout per le richieste sincrone con una proprietaria della finestra.

IE10 e 11 non supportano le richieste sincrone, con il supporto disattivato anche in altri browser. Ciò è dovuto allo detrimental effects risultante dalla loro realizzazione.

Maggiori informazioni possono essere trovate here.