Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JQUERY][AJAX] Zatrzymanie pętli
kwiatek5
post 12.04.2011, 15:34:53
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 26.01.2011

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


Witam,
ta pętla wykona się od razu, czyli prześle żądania ajaxa i się skończy, a w tle będą dołączane zwrócone wyniki.
1. Jak po przyciśnięciu np. buttona 'Stop' usunąć z kolejki pozostałe żądania, aby nie były już zwracane wyniki?
2. Czy jest jakiś sposób, aby wyniki były zwracane w takiej kolejności, jak wskazuje pętla bez blokowania przeglądarki?


  1. $.ajaxSetup({async:true});
  2.  
  3. $('#start').click(function(){
  4. for(var i=0; i<param.length; i++){
  5. $.post(
  6. 'adres.php',
  7. {param: param[i] },
  8. function(dane){
  9. $('#wynik').append(dane);
  10. }
  11. );
  12. }
  13. });


Go to the top of the page
+Quote Post
webdice
post 12.04.2011, 16:57:01
Post #2


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




break
Go to the top of the page
+Quote Post
kwiatek5
post 12.04.2011, 19:20:19
Post #3





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 26.01.2011

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


Cytat(webdice @ 12.04.2011, 17:57:01 ) *
break


Break w pętli nie pomoże.
Go to the top of the page
+Quote Post
krowal
post 12.04.2011, 20:50:30
Post #4





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

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


A nie można tego wysłać jednym requestem ? po co tak bez sensu walić to w pętli ?


--------------------
Nawet świnka może wejść na drzewo kiedy jest chwalona :)
Go to the top of the page
+Quote Post
kwiatek5
post 13.04.2011, 11:13:21
Post #5





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 26.01.2011

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


Cytat(krowal @ 12.04.2011, 21:50:30 ) *
A nie można tego wysłać jednym requestem ? po co tak bez sensu walić to w pętli ?


Nie za bardzo, bo jest zwracanych dużo danych w jednym wywołaniu, a nie chcę podbijać set_time_limit().
Dodatkowo rozmiar powyższej tablicy jest duży.
Go to the top of the page
+Quote Post
krowal
post 13.04.2011, 12:45:32
Post #6





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

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


'duże/dużo' to względne określenie smile.gif A jak wysyłasz x requestów w pętli to na pewno jest to mniej optymalne niż jakbyś to zrobił raz.


--------------------
Nawet świnka może wejść na drzewo kiedy jest chwalona :)
Go to the top of the page
+Quote Post
kwiatek5
post 13.04.2011, 14:19:25
Post #7





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 26.01.2011

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


Problem rozwiązany!
Po zwróceniu wyników wywołuję dopiero następnego requesta poprzez setTimeout().
Klikając przycisk STOP mam w_trakcie=false i wszystko się zatrzymuje.

[JAVASCRIPT] pobierz, plaintext
  1. function fun(p){
  2. $.ajax({
  3. ...,
  4. success: function(dane){
  5. p=...;
  6. if(p < ... && w_trakcie){
  7. setTimeout('fun('+p+')', 1);
  8. }
  9. else{
  10. w_trakcie=false;
  11. alert('Koniec');
  12. }
  13.  
  14. }
  15. });
  16. }
[JAVASCRIPT] pobierz, plaintext

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 Wersja Lo-Fi Aktualny czas: 1.07.2025 - 10:09