2010-03-24 19 views
57

Recibí un informe de error que no puedo duplicar, pero el tiempo de espera de ajax-call es la mejor conjetura actual.JQuery ajax call valor de tiempo de espera predeterminado

Así que estoy tratando de averiguar el valor predeterminado para el tiempo de espera de una llamada a jQuery $.ajax(). ¿Alguien tiene una idea? No se pudo encontrar en la documentación de jQuery.

Gracias de antemano, Marcus

+1

Hmm, creo que esto es específico del navegador. –

+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 –

Respuesta

36

No parece ser un valor por defecto normalizado. Tengo la sensación de que el valor predeterminado es 0, y el evento de tiempo de espera depende totalmente de la configuración del navegador y la red.

Para IE, hay una propiedad de tiempo de espera para XMLHTTPRequests here. Su valor predeterminado es nulo, y dice que es probable que la pila de red sea la primera en desconectarse (lo que hará que no genere un evento ontimeout por cierto).

+0

Así que, básicamente, jQuery no utiliza ninguna valor predeterminado para ello. El problema fue reportado en Safari. Creo que intentaré forzar un poco de tiempo de espera y esperar lo mejor ... ¡Gracias! – Marcus

+0

@Marcus: ¿realmente funcionó? No pude encontrar si el tiempo de espera siempre anula el valor de tiempo de espera del navegador (incluso si el valor de tiempo de espera de Ajax es mayor que el del navegador) –

+0

@Pekka: ¿tiene alguna idea al respecto? http://stackoverflow.com/q/24526201/759452 –

16

Como un lado, al tratar de diagnosticar un error similar me di cuenta de que la devolución de llamada de error de jquery ajax devuelve un estado de "tiempo de espera" si falló debido a un tiempo de espera.

He aquí un ejemplo:

$.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í, vea todos los tipos de error http://stackoverflow.com/questions/3543683/determine-if-ajax-error-is-a-timeout –

4

no hay tiempo de espera, por defecto.

+2

¿Podría compartir alguna fuente que respalde su reclamo? – Panther

+0

Acabo de probarlo y puedo confirmarlo. –

+2

¿Cómo se puede probar la ausencia de tiempo de espera? Podría ser muy largo por defecto – Kaktus

0

La propiedad XMLHttpRequest.timeout representa un número de milisegundos que una solicitud puede tomar antes de que se termine automáticamente. El valor predeterminado es 0, lo que significa que no es tiempo de espera. Una nota importante es que el tiempo de espera no se debe usar para las solicitudes síncronas XMLHttpRequests, que se usan en un entorno de documento o generarán una excepción InvalidAccessError. No puede usar un tiempo de espera para solicitudes síncronas con una ventana con.

IE10 y 11 no admiten solicitudes síncronas, y el soporte también se elimina en otros navegadores. Esto se debe a detrimental effects que resulta de hacerlos.

Más información se puede encontrar here.

Cuestiones relacionadas