Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ XML, AJAX _ Wyświetlanie danych po zakończeniu ajaxu

Napisany przez: Puchatek 17.12.2022, 16:36:19

Cześć,
posiadam dwie funkcje:

  1. <http://december.com/html/4/element/script.html 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. }
  26. </http://december.com/html/4/element/script.html>


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.

Napisany przez: trueblue 17.12.2022, 20:14:11

A może zacząć od modyfikacji skryptu, aby funkcja saveAllRows wywoływała jedno żądanie Ajax?

Napisany przez: nospor 18.12.2022, 19:24:43

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)