2010-04-15 4 views
0

현재 내 코드는 로딩 스피너 gif를 표시하고 데이터를 반환하고 캐싱합니다. 그러나 일단 데이터가 캐싱되면 데이터가로드되기 전에로드 초 GIF가 깜박입니다. 이는 혼란스럽고 제거하고 싶습니다. 나는 여기에 beforeSend 기능에 잘못된 방법을 사용하고 있습니다 생각 :데이터가 캐싱되지 않은 경우에만 로딩 스피너 표시

$.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();     
       } 
      }); 

편집 :

코드를 작업을 다시 업데이트, 주석에서이 시도! 당신은, 그래서 두 번째 또는의 분기 로딩 GIF를 보여주는 지연시킬 수

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

도 시도했지만 .delay()는 사용할 수 없습니다. –

답변

1

충분히 있도록 결코 보여주지 않는다 경우 캐시에서의로드.

+0

아! 좋은 지적! –

+0

흠, 그 일을 이상한 문제가있어서 로딩 GIF가 Alloted 시간 이후에 html을 대체합니다 –

+0

감사합니다 백만 엔! –

관련 문제