Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [js] Wyprowadzenie zmiennej z dwóch funkcji..
BirdWatcher
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 1
Dołączył: 14.12.2006

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


  1. function checkLogin() {
  2.  
  3. var url = "http://www.hyipek2.yoyo.pl/ajax.php?login=";
  4. var login = document.getElementById("login").value;
  5. if(login.length != 0){
  6. var http = getHTTPObject();
  7. http.open("GET", url + escape(login), true);
  8. http.onreadystatechange = function() {
  9. var login_ok = 0
  10. if (http.readyState != 4) {
  11. document.getElementById("login_check").style.backgroundColor='#FFFF99';
  12. document.getElementById("login_check").innerHTML = 'sprawdzam...';
  13. } else {
  14.  
  15. var numer = parseInt(http.responseText);
  16. if(numer == 0){
  17. document.getElementById("login_check").style.backgroundColor='#CCFF66';
  18. document.getElementById("login_check").innerHTML = "Login poprawny";
  19. login_ok = 1;
  20. }else if(numer == 1){
  21. document.getElementById("login_check").style.backgroundColor='#FF9966';
  22. document.getElementById("login_check").innerHTML = "Podany login jest zajety";
  23. login_ok = 0;
  24. }else{
  25. document.getElementById("login_check").innerHTML = numer;
  26. }
  27. }
  28. return login_ok;
  29. }
  30. http.send(null);
  31. }
  32.  
  33. }


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)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nevt
post
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
Go to the top of the page
+Quote Post

Posty w temacie


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: 9.10.2025 - 02:52