Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jquery][ajax] beforeSend i loader
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
miccom
Cześć smile.gif

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

  1. $('body').on('click', '.face', function() {
  2. var that = $(this);
  3. if ((that.data('inprogress') || 0) == 1) { return false;}
  4. $.ajax({
  5. type : "GET",
  6. url : "pobierzDane/"+$(this).attr('id').split('face')[1],
  7. dataType : "json",
  8. beforeSend: function() {
  9. that.data('inprogress', 1);
  10. $("#loader").addClass("loading");
  11. },
  12. }).done(function( data ) {
  13. that.data('inprogress', 0);
  14. $("#loader").removeClass("loading");
  15. showActiveWindow(data.tytul, data.opis, 500, 530,100);
  16. }).fail(function(jqXHR, textStatus, errorThrown) {
  17. that.data('inprogress', 0);
  18. $("#loader").removeClass("loading");
  19. alert(textStatus);
  20. });
  21. });
  22.  
trueblue
A skąd wiadomo jaki będzie czas ładowania? Raczej tego się nie dowiesz.
miccom
No tak... Stąd pytam smile.gif

Myślałem, że w beforeSend ustawię setTimeout ale to działa tak, że mimo że wszystko się załaduje to i tak pokaże się obrazek smile.gif Więc kiszka

Teraz mnie naszło smile.gif
Zamiast dawać diva i bawić się z klasami wystarczy dać:

  1. $('body').css('cursor', 'progress');


Co nie rzuca się w oczy, a użytkownik będzie widział na kursorze ze klikniecie przyniosło efekt smile.gif
A po załadownaiu zawartosci wrzucamy:

  1. $('body').css('cursor', 'auto');

Będzie dobrze?
trueblue
Jeśli żądanie będzie trwało krótko, np. 0.5s, to będzie widocznie mignięcie kursora. Będzie dobrze?
miccom
No myślę że tak:), pytam czy z programistycznego punktu będzie dobrze?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.