Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][AJAX] Logowanie
Axexis
post 27.01.2009, 20:48:28
Post #1





Grupa: Zarejestrowani
Postów: 98
Pomógł: 14
Dołączył: 13.01.2008
Skąd: Birmingham

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


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

Ten post edytował Axexis 27.01.2009, 20:51:32


--------------------
  1. root@php.pl:~# rm -fr /


be. confused
Go to the top of the page
+Quote Post
EarthCitizen
post 27.01.2009, 20:54:28
Post #2





Grupa: Zarejestrowani
Postów: 286
Pomógł: 70
Dołączył: 13.01.2009

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


Kod
window.onload = function() {
        test();
}


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


P.S. eval też jest... i działa w ten sam sposób...

Ten post edytował EarthCitizen 27.01.2009, 20:55:01
Go to the top of the page
+Quote Post
Axexis
post 27.01.2009, 20:56:50
Post #3





Grupa: Zarejestrowani
Postów: 98
Pomógł: 14
Dołączył: 13.01.2008
Skąd: Birmingham

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


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);
    }
}
?>


Ten post edytował Axexis 27.01.2009, 20:57:55


--------------------
  1. root@php.pl:~# rm -fr /


be. confused
Go to the top of the page
+Quote Post
EarthCitizen
post 27.01.2009, 21:00:16
Post #4





Grupa: Zarejestrowani
Postów: 286
Pomógł: 70
Dołączył: 13.01.2009

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


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;
Go to the top of the page
+Quote Post
Axexis
post 27.01.2009, 21:03:52
Post #5





Grupa: Zarejestrowani
Postów: 98
Pomógł: 14
Dołączył: 13.01.2008
Skąd: Birmingham

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


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

Ten post edytował Axexis 27.01.2009, 21:15:48


--------------------
  1. root@php.pl:~# rm -fr /


be. confused
Go to the top of the page
+Quote Post
EarthCitizen
post 27.01.2009, 21:09:23
Post #6





Grupa: Zarejestrowani
Postów: 286
Pomógł: 70
Dołączył: 13.01.2009

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


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
Go to the top of the page
+Quote Post
Axexis
post 27.01.2009, 21:44:55
Post #7





Grupa: Zarejestrowani
Postów: 98
Pomógł: 14
Dołączył: 13.01.2008
Skąd: Birmingham

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


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 : ))


--------------------
  1. root@php.pl:~# rm -fr /


be. confused
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 21:11