posiadam dwie funkcje:
<script type="text/javascript"> function saveRow(row_id) { var form_data = new FormData(); form_data.append('saveRow', $('#row_'+row_id).val()); $.ajax({ type: "POST", url: "ajax/myphpscript.php", processData: false, contentType: false, async: false, data : form_data, success: function (response) { $('#row_'+row_id).addClass('text-success'); } }); } function saveAllRows(num) { for(var i = 1; i <= num; i++) { saveRow(i); } } </script>
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
