
Jak rozwiązać problem .beforeSend i loadera?
W czym problem?
Po kliknięciu w dany element wysyłam zapytanie do bazy danych, zanim dane zostaną zwrócone ( np. przy słabszym łączu internetowym lub długim ładowaniu zawartości ) chcę pokazać obrazek który informuje że dane są pobierane itp. )
I przy .beforeSend ładuję do jednego div klasę loading a po załadowaniu .done usuwam ta klasę.
Działa fajnie, ale:
Jeśli moje łącze jest szybkie to przez ułamek sekundy widze obrazek i on potem znika ( zgodnie z założeniem ) ale czy da się uruchomić ten obrazek np. przy dłuższym ładowaniu niż 0.5 sek. aby przy szybkich łączach obrazek w ogóle się nie pokazywał?
Poniżej przedstawiam fragment kodu ajax
$('body').on('click', '.face', function() { var that = $(this); if ((that.data('inprogress') || 0) == 1) { return false;} $.ajax({ type : "GET", url : "pobierzDane/"+$(this).attr('id').split('face')[1], dataType : "json", beforeSend: function() { that.data('inprogress', 1); $("#loader").addClass("loading"); }, }).done(function( data ) { that.data('inprogress', 0); $("#loader").removeClass("loading"); showActiveWindow(data.tytul, data.opis, 500, 530,100); }).fail(function(jqXHR, textStatus, errorThrown) { that.data('inprogress', 0); $("#loader").removeClass("loading"); alert(textStatus); }); });