Voor een opdracht op school ben ik bezig met een groot script in PHP met OOP, maar hierbij wil ik gebruik maken van ajax om de gegevens op te halen etc.
Hoe werkt dit met ajax, normaal geef je een url mee naar het bestand met het script erin, maar nu staat alles in classes en functies vanwege de OOP natuurlijk.
Hoe kan je dit benaderen met ajax? Of moet je voor die gedeeltes gewoon geen functies gebruiken en buiten de class gaan scripten?
Nu maak ik al gebruik van PHPLiveX die de gegevens via javascript en php omzet zodat het met ajax gebruikt kan worden, maar dit werkt voor mij niet helemaal lekker, en weet ook niet of dit helemaal veilig is.
Is er een standaard manier voor?
Het enige wat je met AJAX kunt doen is een pagina ophalen en de content daarvan op een site plaatsen.
Als je nou met AJAX een login systeem wilt maken, doormiddel van OOP PHP natuurlijk, dan zul je 1 pagina moeten maken waarop de PHP code voor het inloggen staat (login.ajax.php), hierin staat alle PHP code voor het inloggen. En je hebt PHP pagina's met de classes erin:
Regel 1 - 3, hierin zien we de __autoload functie. Deze wordt geroepen zodra je een nieuwe class aanroept (dus met new Classname()).
In de functie zien we dat we dan de classnaam gaan include. We gebruiken _once zodat het bestand niet onnodig vaak wordt geïncluded. Verander het eventuele path en bestandsnaam als dat bij jou anders is. try { ... } catch(Exception $e) { ... }, bij try zetten we alle code en zodra daar een fout in is worden we door gestuurd naar catch. Hierin doen we wat met de foutmelding, in dit geval een echo.
Deze manier heet Exceptions en is de foutafhandeling voor OOP, voor meer informatie:
- PHP.net: exception
- http://phptuts.nl/view/35/8/
Met AJAX roep je nu het bestand aan. Vervolgens krijg je met AJAX de waarde terug die je ziet als je het bestand opent. Met deze waarde kun je in JS wat doen.
Fatal error: Call to a member function prepare() on a non-object in /home/jelmer/domains/mandarijnsleren.nl/public_html/classes/authorisation.class.php on line 12
Fatal error: Call to a member function prepare() on a non-object in /home/jelmer/domains/mandarijnsleren.nl/public_html/classes/authorisation.class.php on line 12
Eerder werkte het gewoon, ik zie de fout niet, ik heb de variabel wel een global meegegeven. Kunnen jullie wat ontdekken?:
In de plaats van de database global te maken kan je hem veel beter meegeven in de constructor van je object en dan de database opslaan in een interne private variabele.
Wat bevat response? Oftewel wat echo je op de pagina? True of false of wat anders? Want als het wat anders is klopt je if niet.
En mocht je true echoen in PHP dan komt er op het scherm 1 te staan. Dus dan wordt je if:
if( response == '1' )
En mocht je false echoen in PHP dan komt er op het scherm 0 te staan. Dan wordt de if:
if( response == '0' )
Ja hij return true, maar hij stuurd de 1 wel door naar de pagina zelf, alleen de ajax lijkt de response niet te ontvangen.
Als ik echo true; meegeef, dan zie ik links bovenin de pagina een 1 verschijnen.
Maar in de POST staat er bij response helemaal niks.
Ook als ik return true; meegeef krijg ik geen response naar de ajax functie toe.
Ik snap er even helemaal niks meer van.
Ja, hij krijgt contact met het bestand.
Krijg ook een waarde terug, als ik een alert(response) doe, dan krijg ik ook een alert met een 1.
Hij gaat alleen niet verder.