Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [jquery][ajax] beforeSend i loader
miccom
post 18.08.2018, 17:40:07
Post #1





Grupa: Zarejestrowani
Postów: 493
Pomógł: 8
Dołączył: 7.07.2007
Skąd: Tychy

Ostrzeżenie: (0%)
-----


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.  


Ten post edytował miccom 18.08.2018, 17:44:00


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
Go to the top of the page
+Quote Post
trueblue
post 18.08.2018, 17:43:38
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


A skąd wiadomo jaki będzie czas ładowania? Raczej tego się nie dowiesz.


--------------------
Go to the top of the page
+Quote Post
miccom
post 18.08.2018, 18:32:59
Post #3





Grupa: Zarejestrowani
Postów: 493
Pomógł: 8
Dołączył: 7.07.2007
Skąd: Tychy

Ostrzeżenie: (0%)
-----


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?

Ten post edytował miccom 18.08.2018, 17:47:45


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
Go to the top of the page
+Quote Post
trueblue
post 18.08.2018, 18:38:30
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Jeśli żądanie będzie trwało krótko, np. 0.5s, to będzie widocznie mignięcie kursora. Będzie dobrze?


--------------------
Go to the top of the page
+Quote Post
miccom
post 18.08.2018, 18:39:48
Post #5





Grupa: Zarejestrowani
Postów: 493
Pomógł: 8
Dołączył: 7.07.2007
Skąd: Tychy

Ostrzeżenie: (0%)
-----


No myślę że tak:), pytam czy z programistycznego punktu będzie dobrze?


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 16:54