Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyświetlanie danych po zakończeniu ajaxu
Forum PHP.pl > Forum > XML, AJAX
Puchatek
Cześć,
posiadam dwie funkcje:
  1. <script type="text/javascript">
  2. function saveRow(row_id)
  3. {
  4. var form_data = new FormData();
  5. form_data.append('saveRow', $('#row_'+row_id).val());
  6. $.ajax({
  7. type: "POST",
  8. url: "ajax/myphpscript.php",
  9. processData: false,
  10. contentType: false,
  11. async: false,
  12. data : form_data,
  13. success: function (response) {
  14. $('#row_'+row_id).addClass('text-success');
  15. }
  16. });
  17. }
  18.  
  19. function saveAllRows(num)
  20. {
  21. for(var i = 1; i <= num; i++)
  22. {
  23. saveRow(i);
  24. }
  25. }


Są to dwie przykładowe funkcje polegające na kolorowaniu wierszy.
Za pomocą row_id odnajduję wiersz w przygotowanej przeze mnie tabeli z dosyć sporą ilością danych.
Funkcji saveRow mogę użyć za pomocą przycisku umieszczonego w każdym wierszu. Po naciśnięciu przycisku wykonuję swoje rzeczy w pliku php, na który kieruje ajax. Po ich wykonaniu koloruję wiersza na zielono.
Mam również przycisk ogólny, za pomocą którego wywołuję pętle (saveAllRows), by przelecieć przez każdy wiersz automatycznie.
Ajax został ustawiony na synchroniczny.
Wszystko działa jak należy, z wyjątkiem wyświetlania tych danych.
Wiersze niestety nie są kolorowane na bieżąco. Zamiast tego, strona jest "zamrożona", a wszystkie wiersze zostają pokolorowane dopiero w momencie, gdy zostanie wykonana cała pętla.
Problem nie występuje, gdy ajax jest ustawiony asynchronicznie. Jednak wtedy wiersze kolorowane są oczywiście nie po kolei.

Czym może być to spowodowane? Jako ciekawostkę dodam, że kilka miesięcy temu wszystko działało tak jak należy.
W tym czasie aktualizowałem tylko bootstrapa z wersji 5.0 na 5.2.
Myślałem, że to może wina firefoxa, bo problem zauważyłem dosłownie chwilę po jego aktualizacji smile.gif Problem jednak występuje również na innych przeglądarkach oraz komputerach.
trueblue
A może zacząć od modyfikacji skryptu, aby funkcja saveAllRows wywoływała jedno żądanie Ajax?
nospor
Cytat
Jednak wtedy wiersze kolorowane są oczywiście nie po kolei.

No i co to za problem? Zaden.
Ale tak jak napisal trueblue, zamiast robic milion ajaxow zrob poprostu jeden. Oszczedzisz swoj serwer, siec, dzieki temu 100 drzew nie bedzie musialo byc scietych i takie tam. O poprawie jakosc twojej aplikacji nie wspominajac wink.gif
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.