2009-04-12 6 views
5

Mon projet d'application Web utilise beaucoup les appels ajax. La plupart d'entre eux sont rapides et répondent presque immédiatement. Donc, montrer ajax loader tout le temps n'est pas nécessaire. Mais je veux montrer un loader ajax quand les appels ajax prennent plus longtemps que 250ms (ou plus). Sinon, les utilisateurs pourraient être confus et continuer à cliquer sur les liens encore et encore. :)Afficher l'indicateur de chargement ajax pas immédiatement mais après un délai

Des idées pour y parvenir en utilisant jQuery?

Répondre

4

Je n'ai aucune expérience avec jQuery, mais pour obtenir un simple retard à l'exécution d'un code, il suffit d'utiliser ceci:

setTimeout ("foo()", 250); 

où foo() est la fonction responsable de Chargement en cours ... indication .

+0

Notez également qu'il est un peu plus rapide à utiliser foo comme une variable plutôt qu'une chaîne, car si vous utilisez une chaîne, il va s'eval'ed: setTimeout (foo, 250); – moff

+0

@moff J'aime cette suggestion, jamais encore essayée, mais je le ferai à partir de maintenant –

2

Pouvez-vous utiliser un chronomètre Javascript pour déclencher après 250ms pour afficher votre message 'loading ...'?

Activez ceci sur ajaxSend(), et désactivez-le sur ajaxComplete() (et effacez le message 'loading ...' si reqd), et donc l'implémentation devrait être transparente pour tous les appels Ajax que vous faites.

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(); 
}); 
Questions connexes