![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 1 Dołączył: 14.12.2006 Ostrzeżenie: (0%) ![]() ![]() |
może ktos pomoże, bo juz 3.36 czyli mecze sie z tym od ponad 3 godzin (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Jak mam wziąc zmienna 'login_ok' wyprowadzic na zewnatrz? probowalem na wiele sposobow, var lo_ok = checkLogin(); zwraca undefined ;/ dzieki (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
masz już prawie dobrze, tylko zrozum, że nie da się tego zrobić przez przekazanie zmiennej w kodzie. postaram ci się to wytłumaczyć:
1. Wywołujesz funkcję checkLogin()... 2. Funkcja ta generuje w AJAX zapytanie do serwera... 3. Przeglądarka NIE CZEKA na wyniki z serwera, tylko dalej wykonuje twoją funkcję checkLogin()... dlatego wewnątrz niej NIE JESTEŚ W STANIE określić login_ok 4. Po pewnym czasie serwer przesyła do przeglądarki odpowiedź i dopiero WTEDY jest wywoływana funkcja przypisana wcześniej do onreadystatechange (to pewne uproszczenie ale wystarczy żeby zrozumiał istotę problemu). 5. Wniosek tego z taki, że tylko wewnątrz tej funkcji przypisanej do onreadystatechange możesz określić co ma zrobić przeglądarka z danymi zwróconymi przez serwer... Podsumowując, musisz zmienić logikę i organizację twoich skryptów... mniej więcaj tak: 1. kliknięcie na guzik "zaloguj" wywołuje funkcję powiedzmy tryLogin(user, pwd). 2. wewnątrz niej robisz zapytanie AJAX i rejestrujesz funkcję obsługi odpowiedzi (przypisaną do onreadystatechange) 3. wewnątrz tej funkcji określasz, czy logowanie powiodło sie... 4. i wtedy dopiero wywołujesz funkcję odpowiedzialną za reakcję na udane lub nieudane logowanie, np. registration(login_ok); powodzenia. Ten post edytował nevt 27.01.2008, 12:41:05 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 9.10.2025 - 02:52 |