![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 9.01.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Witam, od niedawna bawię się ajaksem i mam następujący problem:
Chodzi mi o to, żeby w linijce 16. wyeksportować jakoś zmienną output żebym mógł ją zwrócić w 20. Dodam że korzystam z prototype jeśli to ważne. |
|
|
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 2 258 Pomógł: 16 Dołączył: 21.09.2004 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
A czemu nie zrobisz tak:
Kod onComplete: function(originalRequest) {
//ten output ma iść "na zewnątrz" return originalRequest.responseText; } Ten post edytował revyag 13.08.2008, 13:02:18 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 9.01.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Gdybym zrobił tak jak piszesz, to ta 'wewnętrzna' funkcja onComplete: function(originalRequest) { }, która jest tworzona wewnątrz obiektu Ajax.Request, zwróciłaby wartość, a nie funkcja 'zewnętrzna' getValue; to nie działa tak jak przerwanie w pętli typu na przykład
|
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 2 258 Pomógł: 16 Dołączył: 21.09.2004 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Wydaje mi się że asynchronicznie tego nie zrobisz. Nie wiem jak jest w prototype, ale jquery umożliwia synchroniczny request przypisujący wynik żądania bezpośrednio do zmiennej. Poszukaj w dokumentacji, może coś piszą o tym.
Tak to w jquery wygląda: Kod var html = $.ajax({ url: "some.php", async: false }).responseText;
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 207 Pomógł: 25 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
uh.. asynchronicznie to nie bardzo
Musisz przekazać tą zmienną w onComplete: function(originalRequest) {, czyli tam gdzie ją dostajesz. W sensie - dostałem zmienną, teraz ją użyje! Wywołam sobie funkcje itp. która ją potrzebują właśnie tutaj. Inaczej możesz zrobić to tak, że zadeklarujesz tą zmienną globalnie (przed tą funkcją getValue() ) i w funkcj, która ma z niej korzystać będziesz sprawdzał czy ta zmienna już jest dostępna za pomocą window.setInterval() ... ale to nie ma dla mnie sensu, skoro możesz mieć podobny efekt robiąc to co napisałem wyżej. Jest też trzecia metoda - pobieranie AJAX synchroniczny. Wtedy wykonywanie JS się zablokuje do czasu aż pobierze te dane. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 9.01.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
uh.. asynchronicznie to nie bardzo Musisz przekazać tą zmienną w onComplete: function(originalRequest) {, czyli tam gdzie ją dostajesz. W sensie - dostałem zmienną, teraz ją użyje! Wywołam sobie funkcje itp. która ją potrzebują właśnie tutaj. Coś mniej więcej takiego zrobiłem obchodząc problem, bo żadnych skomplikowanych rzeczy nie musiałem robić, ale chciałem się dowiedzieć czy da się to wykonać inaczej. Dzięki za wskazówki. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 22:17 |