Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js] problem z klasa
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Balon
Kod
function Auth()
{
    var url = 'lib/ajax_request.php';
    var params = 'action=login&login=' + $F( 'form_login' ) + '&pass=' + $F( 'form_pass' );
    
    function login()
    {
        var ajax = new Ajax.Request( this.url, { parameters: this.params, onLoading: msgBox( 'SHOW', 'Loading...' ), onSuccess: msgBox( 'Logged...' ), onFauilure: reportError} );
        switch( ajax.responseText )
        {
            case 'OK': this.msgBox( 'SHOW', 'Logged ...' ); this.pause( 1000 ); this.msgBox( 'HIDE', '' ); break
                
        }
    }
    
    function msgBox( type, msg )
    {
        $F( 'msg_box' ).innerHTML = msg;
        switch( type )
        {
            case 'HIDE': $F( 'msg_box' ).style.display = 'none'; break
            case 'SHOW': $F( 'msg_box' ).style.display = 'block'; break
        }
    }
    
    function pause( ms )
    {
        var now = new Date();
        var exitTime = now.getTime() + ms;
    
        while( true )
        {
            now = new Date();
            if( now.getTime() > exitTime ) return;
        }
    }
}


a wywoluje to tak

  1. <form action="login/" method="post" onsubmit="var auth = new Auth(); auth.login(); return false;">


wywala i przekierowuje mnie na login/ i blad bo to tylko dla picu jest to login/ bo ma wykonywac ten formularz ajax
Cytat
Błąd: Auth is not defined
Plik źródłowy: http://127.0.0.1/~book/
Wiersz: 1


co robie zle ?

wiem ze jestem zielony ale jakos trza zaczynac winksmiley.jpg
siemakuba
1. definicja metod i właściwości dla obiektu Auth:
Kod
// zamiast

var url = 'lib/ajax_request.php';
function login() {}

// dajesz

this.url = 'lib/ajax_request.php';
this.login = function() {}


2. Wywołanie
a) możesz zainicjować obiekt na początku, zaraz po jego definicji:
Kod
var auth = new Auth;

b) możesz zrobić też tak:
  1. <form action="login/" method="post" onsubmit="(new Auth).login(); return false;">


P.S. nie moge teraz zatestować, więc daj znaka czy OK :)
pozdr.
Balon
Kod
/**
* This file is part of G-system.
* @copyright 2006 All rights reserved, do not copy, edit or resale.
* @author Krzysztof Jagiełło <balonyo@gmail.com>
* @version 0.1
*/

function Auth()
{
    this.url = 'lib/ajax_request.php';
    this.params = 'action=login&login=' + $F( 'form_login' ) + '&pass=' + $F( 'form_pass' );
    
    this.login = function login()
    {
        var ajax = new Ajax.Request( this.url, { parameters: this.params, onLoading: msgBox( 'SHOW', 'Loading...' ), onSuccess: msgBox( 'Logged...' ), onFauilure: reportError} );
        switch( ajax.responseText )
        {
            case 'OK': this.msgBox( 'SHOW', 'Logged ...' ); this.pause( 1000 ); this.msgBox( 'HIDE', '' ); break
            case 'ERROR': this.msgBox( 'SHOW', 'Error ...' ); this.pause( 1000 ); this.msgBox( 'HIDE', '' ); break
        }
    }
    
    this.msgBox = function msgBox( type, msg )
    {
        $F( 'msg_box' ).innerHTML = msg;
        switch( type )
        {
            case 'HIDE': $F( 'msg_box' ).style.display = 'none'; break
            case 'SHOW': $F( 'msg_box' ).style.display = 'block'; break
        }
    }
    
    this.pause = function pause( ms )
    {
        var now = new Date();
        var exitTime = now.getTime() + ms;
    
        while( true )
        {
            now = new Date();
            if( now.getTime() > exitTime ) return;
        }
    }
}

var auth = new Auth;


nadal nie dziala....


jak mozesz to przetestuj bo nie wiem co jest grane winksmiley.jpg
siemakuba
hej, a czym objawia się niedziałanie? FireFox -> Narzędzia -> Konsola JavaScript -- najpierw otwórz, wyczyść listę błędów i odśwież stronę. Co pokazuje?

jedno na pewno:

nie tak:
Kod
this.login = function login()

tylko tak:
Kod
this.login = function()


Postaram się sprawdzić jeszcze zaraz, ale naprawdę nie wiem czy dam radę...

edit:
zrobiłem mały test, większego nie mogłem bo nie mam reszty potrzebnych bibliotek (Ajax).

Po zmianach o których napisałem powyżej i wywołaniu auth.login() mam komunikat o braku obiektu AJAX. Obiekt Auth więc jest popranie zbudowany. Jak możesz napisz co pokazuje konsola.
Na mnie niestety możesz liczyć tylko dziś - jutro przywitam się z Tatrami i tak do końca przyszłego tygodnia ;)

pozdr.
Balon
no wywala

Kod
Błąd: Auth.login is not a function
Plik źródłowy: http://127.0.0.1/~book/#
Wiersz: 1


i przy wchodzeniu na strone

Kod
Błąd: element has no properties
Plik źródłowy: http://127.0.0.1/~book/lib/saculo/prototype.js
Wiersz: 1506


poprawiony skrypt

Kod
/**
* This file is part of G-system.
* @copyright 2006 All rights reserved, do not copy, edit or resale.
* @author Krzysztof Jagiełło <balonyo@gmail.com>
* @version 0.1
*/

function Auth()
{
    this.url = 'lib/ajax_request.php';
    this.params = 'action=login&login=' + $F( 'form_login' ) + '&pass=' + $F( 'form_pass' );
    
    this.login = function()
    {
        var ajax = new Ajax.Request( this.url, { parameters: this.params, onLoading: msgBox( 'SHOW', 'Loading...' ), onSuccess: msgBox( 'Logged...' ), onFauilure: reportError} );
        switch( ajax.responseText )
        {
            case 'OK': this.msgBox( 'SHOW', 'Logged ...' ); this.pause( 1000 ); this.msgBox( 'HIDE', '' ); break
            case 'ERROR': this.msgBox( 'SHOW', 'Error ...' ); this.pause( 1000 ); this.msgBox( 'HIDE', '' ); break
        }
    }
    
    this.msgBox = function( type, msg )
    {
        $F( 'msg_box' ).innerHTML = msg;
        switch( type )
        {
            case 'HIDE': $F( 'msg_box' ).style.display = 'none'; break
            case 'SHOW': $F( 'msg_box' ).style.display = 'block'; break
        }
    }
    
    this.pause = function( ms )
    {
        var now = new Date();
        var exitTime = now.getTime() + ms;
    
        while( true )
        {
            now = new Date();
            if( now.getTime() > exitTime ) return;
        }
    }
}

var Auth = new Auth;


wywolanie przykladowe

  1. <input type="submit" value="Login" class="submit" onclick="Auth.login(); return false;"/>


przenosi mnie na strone z bledem...
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.