Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ajax] Odpowiedz z Ajaxa do zmiennej JS
Forum PHP.pl > Forum > XML, AJAX > AJAX
Nookie
Witam

blad na pewno jest trywialny ale Javascript niestety nie jest moja mocna strona sad.gif

mam funkcje (pluje ja z php dlatego jest \")

  1. function GetSelectedRecords(array_element)
  2. {
  3. var db_selected_records;
  4.  
  5. advAJAX.post(
  6. {
  7.  
  8. url: \"users.php\",
  9. timeout : 5000,
  10. onTimeout : function() { alert(\"Connection timed out..\"); },
  11. retry: 2,
  12.  
  13. parameters : {
  14. \"action\" : \"8\",
  15. \"id\" : \"1\"
  16. },
  17.  
  18. onSuccess : function(obj) { db_selected_records=obj.responseText; alert(\"Odpowiedz: \" + obj.responseText); },
  19. onError : function(obj) { alert(\"Error: \" + obj.status); }
  20.  
  21. });
  22.  
  23. alert(db_selected_records);
  24.  
  25. }



Ajax laczy sie poprawnie oraz uzyskuje odpowiedz bo ja ladnie wyswietla.. poprzez alert(\"Odpowiedz...
niestety gdy probuje wyswietlic zmienna db_selected_records jest pusta..

moze mi ktos podpowiedziec jak to powinno wygladac questionmark.gif smile.gif

z gory thx
pozdrawiam!
anopak
ajax jest wykonywany asynchronicznie, czyli w czasie gdy jest wykonywany ajax, JS dalej jest wykonywany.... musiałbyś wykonać ajaxa synchronicznie, aby w ta zmienna była poprawnie wyświetlona po zakończeniu AJAX'a
Nookie
Cytat(Nookie @ 8.06.2006, 20:15 ) *
Witam

blad na pewno jest trywialny ale Javascript niestety nie jest moja mocna strona sad.gif

mam funkcje (pluje ja z php dlatego jest \")

  1. function GetSelectedRecords(array_element)
  2. {
  3. var db_selected_records;
  4.  
  5. advAJAX.post(
  6. {
  7.  
  8. url: \"users.php\",
  9. timeout : 5000,
  10. onTimeout : function() { alert(\"Connection timed out..\"); },
  11. retry: 2,
  12.  
  13. parameters : {
  14. \"action\" : \"8\",
  15. \"id\" : \"1\"
  16. },
  17.  
  18. onSuccess : function(obj) { db_selected_records=obj.responseText; alert(\"Odpowiedz: \" + obj.responseText); },
  19. onError : function(obj) { alert(\"Error: \" + obj.status); }
  20.  
  21. });
  22.  
  23. alert(db_selected_records);
  24.  
  25. }

Ajax laczy sie poprawnie oraz uzyskuje odpowiedz bo ja ladnie wyswietla.. poprzez alert(\"Odpowiedz...
niestety gdy probuje wyswietlic zmienna db_selected_records jest pusta..

moze mi ktos podpowiedziec jak to powinno wygladac questionmark.gif smile.gif

z gory thx
pozdrawiam!



OK, ale jak powiedzmy wykonam funkcje i jej przekaze parametr obj.responseText
kotry bedzie zwieral to co chcialem miec w db_selected_records to powinno dzialac?

czyli wtedy ta linijka powinna wygladac cos ala


  1. onSuccess : function(obj) { setRecods(obj.responseText); alert(\"Odpowiedz: \" + obj.responseText); },
anAKiN
onFinalization daje ci dostep w czasie, kiedy zadanie AJAX-a sie zakonczylo, takze:
Kod
onFinalization: function() { alert(db_selected_records); }
mariuszn3
Nie chodzi przypadkiem o to, że db_selected_records masz zadeklarowane wewnątrz funkcji GetSelectedRecords() a następnie próbujesz się odwołać do zmiennej poza nią (?).. wtedy ze zrozumiałych względów zmienna będzie zwracać wartośc undefined.
Jeśli chcesz aby zmienna była widziana globalnie tak ją zadeklaruj, nie mniej myślę, że w ogóle powinieneś to inaczej rozwiązać, pomaganie sobie zmiennymi globalnymi zazwyczaj jest kiepskim pomysłem.
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.