2009-04-12 4 views
5

Il mio progetto di app Web corrente fa un uso pesante delle chiamate Ajax. Molti di loro sono veloci e rispondono quasi immediatamente. Quindi, mostrare sempre caricatore ajax non è necessario. Ma voglio mostrare un caricatore Ajax quando le chiamate Ajax richiedono più tempo di 250ms (o giù di lì). In caso contrario, gli utenti potrebbero essere confusi e continuare a fare clic sui collegamenti più e più volte. :)Mostra l'indicatore di caricamento ajax non immediatamente ma dopo un ritardo

Qualche idea su come farlo utilizzando jQuery?

risposta

4

ho esperienza precedente con jQuery ma per ottenere un semplice ritardo di esecuzione del codice, basta usare questo:

setTimeout ("foo()", 250); 

dove foo() è la funzione responsabile loading ... indicazione .

+0

Si noti inoltre che è un po 'più veloce di utilizzare foo come una variabile piuttosto che una stringa, dal momento che se si utilizza una stringa, otterrà eval'ed: setTimeout (foo, 250); – moff

+0

@moff Mi piace il suggerimento, non ho mai provato, ma lo farò d'ora in poi –

2

È possibile utilizzare un timer Javascript per attivare dopo 250 ms per visualizzare il messaggio "caricamento in corso ..."?

Attivare questo su ajaxSend(), e disattivarla sul ajaxComplete() (e deselezionare la 'loading ...' messaggio se reqd), e quindi l'attuazione dovrebbe essere trasparente a qualunque Ajax chiamate effettuate.

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(); 
}); 
Problemi correlati