Determine si el error $ .ajax es un tiempo de espera

Estoy utilizando la magia de jQuery.ajax( settings ) .

Sin embargo, me pregunto si alguien ha jugado mucho con el tiempo de espera configurado.

Sé que es básicamente para dictar la hora local para una solicitud, pero ¿puede desencadenar algo si se alcanza el tiempo de espera? ¿O simplemente deja de escuchar una respuesta?

Al leer el sitio jQuery, puedo ver que no se han pasado los argumentos, por lo que parece una configuración simple con una capacidad. Lo cual está bien.

Pero, me gustaría activar una alerta o alguna función si se alcanza el tiempo de espera. Veo que la configuración del error no se activa, en este caso.

Aquí está mi fragmento:

 $("form#testform").submit(function(){ var allFormValues = $("form#testform").serialize(); $.ajax({ cache:false, timeout:8000, // I chose 8 secs for kicks type:"POST", url:"someurl.php", data:allFormValues, error:function(){ alert("some error occurred") }, success:function(response){ alert(response); } }); }); 

¿Alguien sabe cómo trabajar más con tiempo de espera?

Si el controlador de eventos de error toma los tres argumentos (xmlhttprequest, textstatus y message) cuando ocurre un tiempo de espera, el argumento de estado será ‘timeout’.

Según la documentación de jQuery :

Los valores posibles para el segundo argumento (además de nulo) son “timeout”, “error”, “notmodified” y “parsererror”.

Puede manejar su error en consecuencia, entonces.

Creé este violín que demuestra esto.

 $.ajax({ url: "/ajax_json_echo/", type: "GET", dataType: "json", timeout: 1000, success: function(response) { alert(response); }, error: function(xmlhttprequest, textstatus, message) { if(textstatus==="timeout") { alert("got timeout"); } else { alert(textstatus); } } });​ 

Con jsFiddle, puede probar las llamadas ajax; esperará 2 segundos antes de responder. Pongo la configuración de tiempo de espera en 1 segundo, por lo que debería salir el error y devolver un estado de texto de ‘timeout’ al manejador de errores.

¡Espero que esto ayude!