Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [jquery] Problem z rekurencją
mokry
post
Post #1





Grupa: Zarejestrowani
Postów: 374
Pomógł: 23
Dołączył: 3.06.2006
Skąd: Katowice

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


Witam, Mam poniższy skrypt JS, który ma wykonywać się rekurencyjnie do czasu aż pewna zmienna nie osiągnie wartości 0:

  1. <script type="text/javascript">
  2. $(function() {
  3. $( "#progressbar" ).progressbar({
  4. value: <? echo $progress; ?>
  5. });
  6. });
  7.  
  8. function send_newsletter(n) {
  9. if($("#ajax_send").button( "option", "disabled") == true) {
  10. return false;
  11. }
  12. $("#ajax_send").button( "option", "disabled", true );
  13. $("#ajax_send").button( "option", "label", "Wysy\u0142anie newsletter'a... proszę czekać" );
  14. //Ajax request
  15. $.getJSON("<? echo URL::site(Request::instance()->uri); ?>",
  16. {
  17. ajax_send: "1"
  18. },
  19. function(data) {
  20. //Uzupelnij dane poszczegolnych adresow e-mail
  21. $.each(data.emails, function(key, value) {
  22. //alert(value.status);
  23. if(value.status == 1) {
  24. $("#status-"+key).text("wiadomo\u015bć wysłana");
  25. }
  26. if(value.status == 0) {
  27. $("#status-"+key).html("<span style='color:#D10000;font-weight:bold'>ERROR:</span> "+value.error);
  28. }
  29. });
  30.  
  31. //Zmien wartość progress bara
  32. $("#progressbar").progressbar( "option", "value", data.progress);
  33.  
  34. if(data.to_send == 0) {
  35. //Wlacz przycisk, jezeli wszystko poszlo OK
  36. //$("#ajax_send").button( "option", "disabled", false );
  37. $("#ajax_send").button( "option", "label", "Wszystkie wiadomo\u015bci zostały wysłane." );
  38. } else {
  39. setTimeout(function() {
  40. send_newsletter(0);
  41. }, 10000);
  42. }
  43.  
  44. return data.to_send;
  45.  
  46. });
  47. }
  48.  
  49. $("#ajax_send").click(function() {
  50. send_newsletter(0);
  51. });
  52.  


Powyżej znajduje się setTimeout(), który teoretycznie powinien wywołać funkcję ponownie, jednak tak się nie dzieje. Po uruchomieniu funkcji za pomocą kliknięcia w button #ajax_send funkcja wywołuje się tylko jeden raz. W setTimeout() jeżeli dam alert(); pokazuje go...

Dzięki za wszelką pomoc (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




if($("#ajax_send").button( "option", "disabled") == true) {
return false;
}
$("#ajax_send").button( "option", "disabled", true );
Za pierwszym razem IF jest nie prawdziwy wiec idzie dalej. Za drugim razem IF jest prawdziwy wiec kaput i nie ma co się dziwić, że sie nie odpala.
Go to the top of the page
+Quote Post
mokry
post
Post #3





Grupa: Zarejestrowani
Postów: 374
Pomógł: 23
Dołączył: 3.06.2006
Skąd: Katowice

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


Dzięki nospor - teraz działa.
Na początku kod miał wykonywać się nieco inaczej. Później zapomniałem o wyrzuceniu tego z kodu.
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Nastepnym razem aletruj swój kod to nie będziesz z takimi banałami po forach latał
Co pare linijek wal alert i bedziesz widzial do której dochodzi a do której nie.
Powód edycji: [nospor]:
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 17:36