Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Opóźniona funkcja JQuery + AJAX + PHP
mariolita
post
Post #1





Grupa: Zarejestrowani
Postów: 116
Pomógł: 10
Dołączył: 24.04.2015

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


Witam Was serdecznie. Stworzyłem taką funkcję

mam 150 danych (żałóżmy że to liczy są - 150 różnych liczb) funkcja po stronie przeglądarki jquery wysyła osobno -> while - każdą liczbę wysyłka do pliku PHP (w php skrypcie zmienna wysłana z przeglądarki jest szukana odpowidz itd itp) Ajaxem jako POST i odbiera odpowiedź i odowiedź umieszcza w konkretnym miejscu. Proces ten trwa trochę czasu - jest sporo danych - wiem że to chwilę musi potrwać i bardziej skryptu uprościć się nie da. Na końcu funckji już po while ustawiłem żeby $("#status_operacji").text("KONIEC") mnie informwał czy funkcja się skończyła czy nie. Ale niestety KONIEC pojawia się odrazu a funkcja Ajax nadal trwa i nadal dane są zbierane. Co zrobić żeby KONIEC pokazał się dopiero po skończonej funkcji? Pozdrawiam

Ten post edytował mariolita 27.02.2016, 12:53:43
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
kayman
post
Post #2





Grupa: Zarejestrowani
Postów: 556
Pomógł: 40
Dołączył: 20.07.2012
Skąd: Warszawa

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


można to zrobić na 1000 sposobów np dodatkowa zmienna zliczająca odpowiedzi z POST, tablica opóźniana przy odpowiedzi z POST

Go to the top of the page
+Quote Post
mariolita
post
Post #3





Grupa: Zarejestrowani
Postów: 116
Pomógł: 10
Dołączył: 24.04.2015

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


  1. <!--- REFRESH ALL --->
  2.  
  3. $("#refresh").click( function() {
  4.  
  5. $.get("php_files/noeosu.php", function(noeosu) {
  6.  
  7. i = 0;
  8.  
  9. split_noeosu = noeosu.split(",");
  10.  
  11. numbers = split_noeosu[split_noeosu.length-1];
  12.  
  13. while (i < numbers) {
  14.  
  15. this_number = split_noeosu[i];
  16.  
  17. <!--- CHECK NUMBER STATUS --------------------------------!>
  18.  
  19. $.ajax({
  20.  
  21. type: "POST",
  22.  
  23. url: "/php_files/checkstatus.php",
  24.  
  25. data: "checkStatus=" + this_number,
  26.  
  27. success: function(checkedStatus) {
  28.  
  29. $("#header_left").append(checkedStatus);
  30.  
  31. if(i == numbers) {
  32.  
  33. $("#list").text("KONIEC");
  34.  
  35. }
  36.  
  37. }
  38.  
  39. });
  40.  
  41. <!--- CHECK ALL --------------------------------!>
  42.  
  43. i++;
  44.  
  45. }
  46.  
  47.  
  48.  
  49. });
  50.  
  51. });
Go to the top of the page
+Quote Post
kayman
post
Post #4





Grupa: Zarejestrowani
Postów: 556
Pomógł: 40
Dołączył: 20.07.2012
Skąd: Warszawa

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


Kod
if(i == numbers) {
$("#list").text("KONIEC");
}


napisane jest -> jeżeli ilość wysłanych == ilość do wysłania to koniec

a ile odebranych nie wiadomo czyli zły warunek

Ten post edytował kayman 27.02.2016, 13:30:49
Go to the top of the page
+Quote Post
mariolita
post
Post #5





Grupa: Zarejestrowani
Postów: 116
Pomógł: 10
Dołączył: 24.04.2015

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


fakt, lecz sprawdziłem każdą linię i okazuje się że tam gdzie Ajax - zanika stopniowanie i++ i odrazu jest maxymalna liczba.

async: false

dodane do Ajaxa pomogło smile.gif
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 Aktualny czas: 19.08.2025 - 07:34