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();
}
});
également essayé .delay() mais en vain –