Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS] advAJAX i przypisanie wyniku do zmiennej
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
skowron-line
Witam, mam taką funkcję.
  1. function get_comment( id_aut, miesiac_rok )
  2. {
  3. var comment = 'wtf??';
  4. advAJAX.get({
  5. url: 'ajax/rap_analiza_oper_typ_rap_5_get_comment.ajax.php',
  6. mimeType: 'text/html',
  7. parameters:
  8. {
  9. "id_automatu": id_automatu,
  10. "data": miesiac_rok
  11. },
  12. onSuccess : function( obj )
  13. {
  14. alert( obj.responseText );
  15. comment = obj.responseText;
  16. }
  17. });
  18. return comment;
  19. }

zmienna comment nie zostaje ustawiona ale alert się wykonuje i pokazuje wartość obj.responseText; Dlaczego questionmark.gif
wookieb
Bo ajax wykonuje sie w sposób asynchroniczny (nieblokujący przeglądarki), wiec w momecie wywoływania twojego returna comment nie miało jeszcze ustawionej wartości, dlatego powinieneś wykonywać funkcję ustawiająca komentarz w zdarzeniu onsuccess albo przelaczyc advajax-a w tryb synchroniczny (nie bedzie mogl nic zrobic w oknie przegladarki na czas wykonywania skryptu) ale tego nie polecam.
skowron-line
Cytat(wookieb @ 22.07.2009, 13:19:16 ) *
Bo ajax wykonuje sie w sposób asynchroniczny (nieblokujący przeglądarki), wiec w momecie wywoływania twojego returna comment nie miało jeszcze ustawionej wartości


czyli dajac tak
  1. function get_comment( id_aut, miesiac_rok )
  2. {
  3. var comment = 'wtf??';
  4. advAJAX.get({
  5. url: 'ajax/rap_analiza_oper_typ_rap_5_get_comment.ajax.php',
  6. mimeType: 'text/html',
  7. parameters:
  8. {
  9. "id_automatu": id_automatu,
  10. "data": miesiac_rok
  11. },
  12. onSuccess : function( obj )
  13. {
  14. return obj.responseText;
  15. }
  16. });
  17.  
  18. }
  19.  
  20.  
  21. function x()
  22. {
  23. alert( get_comment( id_aut, miesiac_rok );
  24. }

funkcja nie zwrocie mi obj.responseText questionmark.gif
wookieb
Sprawdziłeś? Jak widać nie. Ale dziś mam dobre serce i powiem. Nie.
skowron-line
Cytat(wookieb @ 22.07.2009, 13:33:22 ) *
Sprawdziłeś? Jak widać nie. Ale dziś mam dobre serce i powiem. Nie.

Stary jasne że sprawdziłem nie urodziłem się wczoraj, chcialem zebyś mi to potwierdził.

wookieb++ musze powiedzieć ze sporo wiesz.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.