Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][AJAX] Logowanie
Forum PHP.pl > Forum > Przedszkole
Axexis
y0! ;D

Zgłaszam się po kolejne rady tongue.gif

A więc mam sobie formularz, który wysyłam via ajax.
W odpowiedzi dostaję np.
  1. <div id="blad">
  2. <h2>Blad</h2><h3>Zly login lub hasło</h3>
  3. </div>
  4.  
  5. <script type="text/javascript">
  6. function test()
  7. {
  8. alert('bu');
  9. }


I teraz.. Czy jest jakiś sposób, aby jakoś uruchomić funkcję test (z automatu)?

Czy jest w JS coś na wzór eval() z php? biggrin.gif
EarthCitizen
Kod
window.onload = function() {
        test();
}


lub
  1. <body onload='test()'>


P.S. eval też jest... i działa w ten sam sposób...
Axexis
window.onload nie działa. Pisałem, że logowanie leci z ajaxu: Bez reloadu strony.
kod js dla zainteresowanych
Kod
function AJAXLogin()
{
    var url = "/zaloguj?do=login&ajax=1";
    var login = document.getElementById('login').value;
    var password = document.getElementById('pass').value;
    var divid = document.getElementById('form');
    var bladid = document.getElementById('blad');
    var parametry = "ulogin="+login+"&upassword="+password;
    if(login.length == 0 || password.length == 0)
    {
        bladid.innerHTML = '<h2>Bledne pole login/haslo!</h2><h3>Pole login lub haslo nie zostalo wypelnione! Prosimy sprobowac ponownie.</h3>';
        bladid.style.display='block';
    } else
    {
        bladid.style.display='none';
        ajaxobj.open("POST", url, true);
        ajaxobj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        ajaxobj.setRequestHeader("Content-length", parametry.length);
        ajaxobj.setRequestHeader("Connection", "close");
            
        ajaxobj.onreadystatechange = function()
        {
            if(ajaxobj.readyState == 1)
            {
                divid.innerHTML = '<center><h3>Logowanie....</h3></center>';
            } else if(ajaxobj.readyState == 4 && ajaxobj.status == 200)
            {
                divid.innerHTML = ajaxobj.responseText;
            }
        }
        ajaxobj.send(parametry);
    }
}
?>
EarthCitizen
To chyba ta funkcja powinna być wywoływana przez submit (guzik "Zaloguj się") ? <form action="#" onsubmit='return AJAXLogin()'> i na końcu funkcji daj return false;
Axexis
Schowaj się : )
Wiem po co jest ta funkcja (de facto sam ją pisałem) i jak ją wywołać.

Raz jeszcze wytłumaczę:
Funkcja wyżej podana zwraca (divid.innerHTML = ajaxobj.responseTextwinksmiley.jpg wynik:
  1. <div id="blad">
  2. <h2>Blad</h2><h3>Zly login lub hasło</h3>
  3. </div>
  4.  
  5. <script type="text/javascript">
  6. function test()
  7. {
  8. alert('bu');
  9. }


ktory jest jak widac (divid.innerHTML = ajaxobj.responseText;) na żywo władowana do diva.
I chcę, aby została wykonana funkcja test beż zadnego klikania, przeładowywania strony (window.onload) itp.

#down:
Przykro mi, że uraził Cię fakt, że nie potrafisz czytać ze zrozumieniem, a ja to postanowiłem wyrazić w sposób czysto ironiczny. Tak, teraz masz prawo się urazić. I jak na razie patrząc na Twoje posty, Twój poziom jest dużo niższy niż się Tobie wydaje. To, że znam bardziej PHP, nie oznacza, że w JavaScripcie jestem całkowicie zielony, bo jak dotąd na 980 linijek napisanego przeze mnie kodu w JS nie pytałem nikogo o pomoc (no, oprócz Wujka Google).

Więc jeżeli masz zamiar się wyżalać, bo masz trochę więcej postów (paradoksalnie dokładnie rok później się zarejestrowałeś - ja po prostu więcej czasu poświęcam na pracę, niż na fora smile.gif) to źle trafiłeś. Przykro
EarthCitizen
Cytat
Schowaj się smile.gif


No fajne podziękowanie, zachęci pomocy... To, że Cię źle zrozumiałem nie daje Ci chyba powodu do takich odpowiedzi? Uważam, że mam większe doświadczenie w JS od Ciebie i mimo, ze teraz już wiem co chcesz osiągnąć chowam się zgodnie z Twoją prośbą winksmiley.jpg
Axexis
Cóż, po 10 minutach wertowania, doszedłem do tego, jak zrobić to czego chciałem:

Dla zainteresowanych:
Kod JS:
Kod
// Logowanie via AJAX.//
function AJAXLogin()
{
    var url = "/zaloguj?do=login&ajax=1";
    var login = document.getElementById('login').value;
    var password = document.getElementById('pass').value;
    var divid = document.getElementById('form');
    var bladid = document.getElementById('blad');
    var parametry = "ulogin="+login+"&upassword="+password;
    if(login.length == 0 || password.length == 0)
    {
        bladid.innerHTML = '<h2>Bledne pole login/haslo!</h2><h3>Pole login lub haslo nie zostalo wypelnione! Prosimy sprobowac ponownie.</h3>';
        bladid.style.display='block';
    } else
    {
        bladid.style.display='none';
        ajaxobj.open("POST", url, true);
        ajaxobj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        ajaxobj.setRequestHeader("Content-length", parametry.length);
        ajaxobj.setRequestHeader("Connection", "close");
            
        ajaxobj.onreadystatechange = function()
        {
            if(ajaxobj.readyState == 1)
            {
                divid.innerHTML = '<center><h3>Logowanie....</h3></center>';
            } else if(ajaxobj.readyState == 4 && ajaxobj.status == 200)
            {
                divid.innerHTML = eval(ajaxobj.responseText);
            }
        }
        ajaxobj.send(parametry);
    }
}


Aby zadziałało divid.innerHTML = eval(ajaxobj.responseText); musi zwracać najpierw Javascript a później dopiero HTML, np.:
Kod
alert('bu');
<div id="cos">
[...]
</div>



//// PÓŁFINAŁexclamation.gif : ))
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.