Funkcja pobiera wartość z input-a "a". Za pomocą getJSON wysyła owy login do skryptu, który sprawdza czy w bazie takowy już istnieje.
Jeśli login istnieje, w divie o id #log wyświetlana jest informacja "login wolny" (czyli odpowiedź data.logres), w przeciwnym razie mamy wiadomość że login zajęty.
I to działa bez zarzutu.. Kod wygląda następująco: (kod #1)
function CheckLogin(a){ var resfile = "../validation/logcheck/index.php?log="+a; $.getJSON(resfile, function(data){ $("#log").html(data.logres); }); }
Ale zależy mi aby sama funkcja oprócz wypisywania info na temat loginu zwracała true gdy login wolny i false gdy zajęty.
JSON zwraca w tym celu dodatkowy parametr data.ret - równy powiedzmy 0 gdy login zajęty i 1 gdy wolny.
Schody zaczynają się gdy chce uzależnić wynik funkcji od tej że zmiennej.
Próba pierwsza wyglądała tak : (kod #2)
function CheckLogin(a){ var resfile = "../validation/logcheck/index.php?log="+a; $.getJSON(resfile, function(data){ $("#log").html(data.logres); if(data.ret=="1"){ return true; } else return false; }); }
Nie zadziałało...
Podejście drugie: (kod #3)
function CheckLogin(a){ var resfile = "../validation/logcheck/index.php?log="+a; $.getJSON(resfile, function(data){ $("#log").html(data.logres); if(data.ret=="1"){ var rr="1"; } else { var rr="0"; } }); if(rr=="1"){ return true; } else return false; }
Tu też nie zadziałało, bo zmienna została zdefiniowana w getJSON i na zewnątrz nie ma do niej dostępu...
Wszystko utrudnia jeszcze fakt że przy asynchronicznym działaniu skrypt nie czeka na wykonanie $.getJSON
Mimo wszystko wydaje mi się że rozwiązanie nie jest jakoś masakrycznie trudne i kod nr 2 jest najbliżej bycia prawidłowym...
W każdym razie proszę o pomoc bo sam prędzej osiwieje ...
