Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][AJAX]zatrzymanie gifa w beforesend
Forum PHP.pl > Forum > Przedszkole
Kishin
Witam,

Mam taki mały problem, wyciągam sobie dane ajaxem, natomiast przed ich wyciągnięciem chce aby pojawiał sie ładny gif loadera i ogólnie wszystko się udało,
natomiast nie wiedzieć czemu gif zatrzymuje sie na ok 0,5-1sec (przestaje sie kręcić kółeczko smile.gif ) zaraz przed wczytaniem danych, nie jest to jakis wielki problem ale nie rozumiem czemu tak sie dzieje.
Co ciekawe na chromie wszystko działa ok.

Podejrzewam ze gif sie przywiesza po wczytaniu danych i juz przy wykonywaniu pętli js ale nie jestem pewien.

Ktoś ma jakieś pomysły?


  1. $.ajax({
  2. url: "ajax/lista_pytan_ajax.php",
  3. async: true,
  4. method: 'post',
  5. dataType: "json",
  6. data: {
  7.  
  8.  
  9.  
  10.  
  11. },
  12. beforeSend: function() {
  13.  
  14. $('#lista_pytan_table tfoot').html('<tr><td colspan="6"><center>Loading <i class="fa fa-spinner fa-spin"></i></center></td></tr>');
  15.  
  16.  
  17. },
  18.  
  19. success: function(dane) {
  20. var tabela='';
  21.  
  22. $.each(dane, function(i) {
  23.  
  24. tabela += "<tr class='wybor' id='id_" + this.id + "' onclick=edycja(" + this.id + ",'show')>";
  25. tabela += '<td>' + this.id + '</td>';
  26. tabela += '<td>' + this.tresc + '</td>';
  27. tabela += '<td>' + this.data_dodania + '</td>';
  28. tabela += '<td>' + this.start + '</td>';
  29. tabela += '<td>' + this.end + '</td>';
  30. tabela += '<td>' + this.wlasciciel + '</td>';
  31.  
  32. tabela += "</tr>";
  33. });
  34.  
  35.  
  36.  
  37. $('#lista_pytan_table tfoot').empty();
  38. $('#lista_pytan_table tbody').html(tabela);
  39.  
  40.  
  41.  
  42. $('#lista_pytan_table').dataTable();
  43.  
  44. },
  45.  
  46.  
  47.  
  48. });
  49.  
  50.  
  51.  
  52.  
  53.  
  54. }
slash^
Tam nie masz przecież gifa smile.gif
A co do zatrzymania animacji -> ponieważ pętla $.each "blokuje" przeglądarke. Poczytaj jak zrobic asynchroniczną pętle w js.
Kishin
Wiem że tam niema gifa, ale jest <i class="fa fa-spinner fa-spin"></i> a to działa tak jak gif a krócej do napisania smile.gif

Co do asynchronicznej pętli w js, troche się naczytałem i w końcu zdecydowałem sie to rozwiązać inaczej.
Całą tabelke robie sobie jeszcze w zapytaniu ajaxowym po czym przekazuje ją jako 1 element, chce ją wtedy wypisać zwyczajnym $('#lista_pytan_table tbody').html(dane.tabela);
i ku mojemu niezadowoleniu efekt sie nie zmienił :/. Tak jakby teraz ta funkcja html() blokowała mi przeglądarke.
slash^
Ponieważ większość metod js jest synchronicznych, robiąc to pętlą asynchroniczną osiągniesz efekt braku "zacięcia" się przeglądarki. Na internetach jest sporo przykładów.
Kishin
ok ewidentnie to jest rozwiązaniem mojego problemu, ale że wyskoczyło kilka innych ciut bardziej priorytetowych kwestii niż zacinanie sie loadera smile.gif bede musiał to przełożyc na później.
wrzuce kod jak będe miał gotowe.

Dzieki za naprowadzenie
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-2025 Invision Power Services, Inc.