2010-04-15 4 views
0

Actuellement, mon code affiche un spinner de chargement gif, renvoie les données et les met en cache. Cependant, une fois que les données ont été mises en cache, il y a un scintillement du gif de chargement pendant une fraction de seconde avant que les données ne soient chargées. C'est distrayant et j'aimerais m'en débarrasser. Je pense que j'utilise la mauvaise méthode dans la fonction beforeSend ici:Affichage d'un spinner de chargement uniquement si les données n'ont pas été mises en cache

$.ajax({ 
       type : "GET", 
       cache : false, 
       url  : "book_data.php", 
       data : { keywords : keywords, page : page }, 
       beforeSend : function() {     
        $('.jPag-pages li:not(.cached)').each(function (i) {       
         $('#searchResults').html('<p id="loader">Loading...<img src="../assets/images/ajax-loader.gif" alt="Loading..." /></p>'); 
        }); 
       }, 
       success : function(data) { 
        $('.jPag-current').parent().addClass('cached'); 
        $('#searchResults').replaceWith($(data).find('#searchResults')).find('table.sortable tbody tr:odd').addClass('odd'); 
        detailPage(); 
        selectForm();     
       } 
      }); 

Edit:

Essayer ceci du commentaire, mis à jour à nouveau avec le code de travail!

var timeout = setTimeout(function(){ 
      $('#searchResults').html('<p id="loader">Loading...<img src="../assets/images/ajax-loader.gif" alt="Loading..." /></p>'); 
      }, 500); 
      $.ajax({ 
       type : "GET", 
       cache : false, 
       url  : "book_data.php", 
       data : { keywords : keywords, page : page }, 
       beforeSend : function() { 
        timeout; 
       }, 
       success : function(data) { 
        clearTimeout(timeout); 
        $('.jPag-current').parent().addClass('cached'); 
        $('#searchResults').replaceWith($(data).find('#searchResults')).find('table.sortable tbody tr:odd').addClass('odd'); 
        detailPage(); 
        selectForm();     
       } 
      }); 
+0

également essayé .delay() mais en vain –

Répondre

1

Vous pouvez retarder montrant le gif de chargement pour un quart de seconde ou, assez pour qu'il ne montre jamais si son chargement à partir du cache.

+0

ah! bon point! –

+0

hmm, ayant des problèmes étranges faire cela tho, le chargement gif remplace le html après le temps alloué –

+0

Merci un million arnie! –

Questions connexes