현재 내 코드는 로딩 스피너 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();
}
});
도 시도했지만 .delay()는 사용할 수 없습니다. –