success headers error data jquery ajax connection-timeout

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



jquery ajax headers (1)

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

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

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

Al leer el sitio de jQuery, puedo ver que no se pasaron 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. Puedo ver que la configuración de 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 el tiempo de espera?


Si su controlador de eventos de error toma los tres argumentos (xmlhttprequest, textstatus y message) cuando se produce un tiempo de espera, el estado arg 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.

He creado este fiddle 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. Puse la configuración de tiempo de espera en 1 segundo, por lo que debería error y devolver un estado de texto de ''tiempo de espera'' al controlador de errores.

¡Espero que esto ayude!