2009-04-12 12 views
5

Mi proyecto actual de aplicación web hace un uso intensivo de las llamadas ajax. La mayoría de ellos son rápidos y responden casi de inmediato. Por lo tanto, mostrar ajax loader todo el tiempo no es necesario. Pero quiero mostrar un cargador ajax cuando las llamadas ajax tardan más de 250ms (más o menos). De lo contrario, los usuarios podrían confundirse y seguir haciendo clic en los enlaces una y otra vez. :)Mostrar el indicador de carga de ajax no inmediatamente, pero después de un retraso

¿Alguna idea de cómo lograr eso usando jQuery?

Respuesta

4

que no tienen experiencia previa con jQuery pero para lograr un simple retraso de la ejecución de un código, sólo tiene que utilizar esto:

setTimeout ("foo()", 250); 

donde foo() es la función de responsable de la carga ... indicación .

+0

También tenga en cuenta que se trata de algo más rápido de usar foo como una variable en lugar de una cadena, ya que si se utiliza una cadena, se obtendrá eval'ed: setTimeout (foo, 250); – moff

+0

@moff Me gusta esa sugerencia, nunca lo intenté, pero lo haré a partir de ahora –

2

¿Se puede utilizar un temporizador Javascript para disparar después de 250ms para mostrar su mensaje 'cargando ...'?

Actívela en ajaxSend(), desactívela en ajaxComplete() (y borre el mensaje 'cargando ...' si es necesario), por lo que la implementación debe ser transparente para las llamadas AJAX que realice.

1
var activity = false; 
$("#loadingIndicator").ajaxStart(function() { 
    activity = true; 
    window.setTimeout(function() { 
     if (activity) { 
      //alert('activity'); 
      $("#loadingIndicator").show(); 
     } 
    } 
    , 700); 
}); 
$("#loadingIndicator").ajaxStop(function() { 
    activity = false; 
    $(this).hide(); 
}); 
Cuestiones relacionadas