Vous êtes sur la page 1sur 20

[xAjax] Applications AJAX faciles avec PHP et xAjax !

http://www.siteduzero.com/tutoriel-3-36169-xajax-applications-ajax-fa...

[xAjax] Applications AJAX faciles avec PHP et xAjax !


Informations sur le tutoriel
Auteur : MansonMan Difficult :

Plus d'informations

Popularit
Visualisations : 2 567 307 Apprciation 4 des lecteurs :4 2 29 33 personnes souhaitent voir ce tutoriel publi en livre ! Vous aussi ?

Historique des mises jour


Le 18/11/2010 13:53:51 Ticket #3284: Correction d'un bug zCode Le 05/11/2010 15:17:21 zCorrection novembre 2010 Le 03/10/2010 16:09:06 Modification des liens pointant vers la librairie xAjax et la documentation

Partager
Imprimer Convertir en PDF Email Twitter Facebook Plus de services Bonjour tous ! Comme c'est indiqu dans le titre, ce tutoriel est consacr la librairie xAjax !

C'est pas du produit pour nettoyer l'vier ce truc ? xAjax est une librairie open source toujours en dveloppement, qui permet de dployer des applications AJAX puissantes trs facilement en ayant des bases de PHP (attention je me permets d'insister, xAjax n'est pas AJAX, ce n'est qu'un moyen d'en faire trs facilement !). AJAX signifie Asynchronous Javascript And XML : ce type d'application permet de maintenir une communication entre le serveur et le client, sans que celui-ci n'ait besoin de recharger la page. N'avez-vous jamais rv d'un chat o vous n'avez pas besoin de recharger la page ? Ou encore d'un formulaire de connexion qui ne charge pas une nouvelle page pour vous afficher un message d'erreur, vous disant ? Voil quoi sert xAjax ! Je ne vous fais pas baver plus longtemps, roulez jeunesse ! Niveau : 3/10 - Dbutant Sommaire du tutoriel :

Introduction la librairie xAjax et la POO Les dbuts avec xAjax crire et appeler des fonctions avec xAjax Recevoir et traiter une rponse xAjax dans ses fonctions Un Chat en xAjax! xAjax et l'encodage de caractres

1 sur 20

27/03/2011 05:38

[xAjax] Applications AJAX faciles avec PHP et xAjax !

http://www.siteduzero.com/tutoriel-3-36169-xajax-applications-ajax-fa...

Traiter des formulaires avec xAjax Crer un message de chargement avec xAjax Rsum des mthodes xAjax Q.C.M.

Introduction la librairie xAjax et la POO

Je tiens d'abord vous prvenir ; en crivant ce tutoriel, je pars du principe que vous connaissez les bases du PHP, c'est--dire que vous savez faire des conditions ( ), des boucles ( , ) et que vous connaissez le xHTML (pour afficher les donnes). Si vous ne connaissez pas tout cela, ne continuez pas : vous risqueriez de perdre du temps (dj que je ne suis pas le pro de l'explication). De lgres connaissances en Javascript sont utiles mais pas indispensables.

Avant de commencer, il va falloir tlcharger la librairie PHP xAjax (prenez la version xAjax 0.5 Final Standard) sur le site xajax-project.org, et copiez les dossiers xajax_core, xajax_js, xajax_controls, et xajax_plugins la racine de votre site !

Voil, c'est tlcharg ? Bon, continuons !

Concrtement, que va faire xAjax ? Voyons deux cas : le premier sans xAjax, le second avec. Sans xAjax, on aurait le schma suivant : 1. 2. 3. 4. 5. l'utilisateur appelle une page ; le serveur gnre la page ; le serveur renvoie la page finale ; la page est affiche par le navigateur de l'utilisateur ; fin des changes entre le serveur et l'utilisateur (impossible de mettre les informations de la page jour sans actualiser et recommencer le schma depuis le n1).

Avec xAjax, on aurait ceci : 1. 2. 3. 4. 5. l'utilisateur appelle une page ; le serveur gnre la page ; le serveur renvoie la page finale ; la page est affiche par le navigateur de l'utilisateur ; xAjax maintient une connexion asynchrone avec le serveur en effectuant des requtes en tches de fond, et va mettre jour notre page sans rechargement, de manire totalement transparente pour l'utilisateur, en recommenant le schma au n2 (nous sautons donc le point n1, l'utilisateur n'a pas besoin d'effectuer une action pour que la page se mette jour).

Vous voyez bien ici quelle est l'utilit de xAjax : soumettre des requtes au serveur de faon transparente (en tche de fond), et modifier la page grce aux rsultats retourns !

Qu'est-ce qu'une librairie PHP ? C'est une page regroupant un ensemble de fonctions qui vont nous permettre de raliser des actions (normalement longues, rptitives, difficiles et rbarbatives) de faon simple, en les appelant dans notre script. Un exemple : nous souhaitons grer un caddie dans notre galerie marchande : Code : PHP - Slectionner

2 sur 20

27/03/2011 05:38

[xAjax] Applications AJAX faciles avec PHP et xAjax !

http://www.siteduzero.com/tutoriel-3-36169-xajax-applications-ajax-fa...

<?php function total_caddie($caddie) { // Calcule le montant total des achats. } function nombre_articles($caddie) { // Retourne le nombre d'articles prsents dans le caddie. } function ajouter_article($produit, $caddie) { // Va ajouter un article notre caddie. } // Etc. ?>

Grce cet ensemble de fonctions PHP, il sera trs simple pour le programmeur de calculer facilement le montant du caddie, en appelant simplement la fonction par exemple. Nanmoins, dans notre librairie xAjax, a ne se prsente pas de cette faon (ouvrez le fichier, vous verrez) ! Compliquons un peu les choses. Nous venons de regrouper du code dans des fonctions ; eh bien nous pouvons regrouper nos fonctions dans des classes. Vous voyez, c'est un peu comme des botes : le code est contenu dans la bote fonction, et la bote fonction est contenue dans la bote classe. On appelle ces fonctions des mthodes. Chaque bote classe sert faire quelque chose ; pour xAjax, nous allons nous servir de deux classes de la librairie : l'une sert configurer et gnrer le Javascript , l'autre grer les rsultats . Ainsi, notre librairie xAjax se prsente de cette faon : Code : PHP - Slectionner <?php class xajax($chemin_xajax) // La classe qui va nous permettre de gnrer le Javascript. { function fonction1() // Premire fonction. { // Code... } function fonction2() // Deuxime fonction. { // Code... } function fonction3() // Troisime fonction. { // Code... } // Etc. } class xajaxResponse() // La classe qui va nous permettre de grer les rponses de xAjax. { function fonction1() // Premire fonction. { //Code... } function fonction2() // Deuxime fonction. { // Code... } function fonction3() // Troisime fonction. { // Code... } // Etc. }

Vous voyez, ce n'est pas bien compliqu pour le moment. Bien sr, vous ne connaissez pas les fonctions qui se trouvent dans la librairie ni leur utilit ; c'est normal, je vais vous l'apprendre dans ce tutoriel ! Pour pouvoir appeler nos mthodes, il faut crer une instance d'une classe. Oulah Cachez cet air bahi ! Pour reprendre notre exemple des botes, crer une instance d'une classe signifie ouvrir la bote pour avoir accs toutes les fonctions de la classe. Voici un exemple. Nous avons notre classe avec les fonctions pour calculer le total, etc., l'intrieur : Code : PHP - Slectionner

3 sur 20

27/03/2011 05:38

[xAjax] Applications AJAX faciles avec PHP et xAjax !

http://www.siteduzero.com/tutoriel-3-36169-xajax-applications-ajax-fa...

<?php class caddie { function total_caddie($caddie) { // Calcule le montant total des achats. } function nombre_articles($caddie) { // Retourne le nombre d'articles prsents dans le caddie. } function ajouter_article($produit, $caddie) { // Va ajouter un article notre caddie. } // Etc. } $caddie_client = new caddie(); // On cre une instance de la classe caddie (en gros, on ouvre la boite caddie). $caddie_client->total_caddie($achats_du_client); // On appelle la fonction total_caddie() qui se trouve dans la classe. $caddie_client->ajouter_article('pull_over', $achats_du_client); // On appelle la fonction ajouter_article(). // Etc. ?>

Voil : vous venez de comprendre le principe de la Programmation Oriente Objet (POO). Les bases de la POO que je viens de vous donner ici sont suffisantes pour comprendre la suite du tutoriel. Si vous en savez plus sur la POO, tant mieux ! Sinon, voici un super tutoriel sur le Site du Zro : tutoriel sur la POO. Bilan de cette introduction Retenez bien ce que signifie crer une instance d'une classe , car ce vocabulaire sera utilis plusieurs fois dans ce tutoriel ! Retenez bien que les fonctions qui sont contenues dans les classes s'appellent des mthodes !

Les dbuts avec xAjax


Maintenant que nous sommes au point avec la POO, commenons ! Code : PHP - Slectionner <?php require_once('./xajax_core/xajax.inc.php'); $xajax = new xajax(); // On initialise l'objet xajax. $xajax->processRequest(); // Fonction qui va se charger de gnrer le Javascript, partir des donnes que l'on a fournies xAjax. ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1 /DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <title>Page xajax</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <?php $xajax->printJavascript(); /* Fonction qui affiche le javascript de la page. */ ?> </head> <body> <div id="block"></div> </body> </html>

Vous allez penser que je suis un sadique de vous coller ce pt devant le nez, mais si on s'y penche bien, vous verrez que vous connaissez presque toutes les lignes. On va les dcomposer ensemble : Code : PHP - Slectionner <?php require_once('./xajax_core/xajax.inc.php'); ?>

Dans un premier temps, on indique PHP qu'il doit inclure notre librairie xAjax dans la page. La librairie se trouve dans le rpertoire xajax_core (

4 sur 20

27/03/2011 05:38

[xAjax] Applications AJAX faciles avec PHP et xAjax !

http://www.siteduzero.com/tutoriel-3-36169-xajax-applications-ajax-fa...

core signifiant le cur de la librairie). Code : PHP - Slectionner <?php $xajax = new xajax(); // On cre une instance de la classe xajax. ?>

Voil une ligne bien obscure dans vos penses Oui, oui, je vois cela dans vos yeux. En fait, ce n'est pas si dur ! On a cr une instance de xAjax, et grce cet objet, on va pouvoir appeler toutes les mthodes qui se trouvent dans la classe xAjax ! Comme je le disais plus haut, cet objet va nous permettre de gnrer le Javascript de la page. Il est donc indispensable ! Code : PHP - Slectionner <?php $xajax->processRequest();// Fonction qui va se charger de gnrer le Javascript partir des donnes que l'on a fournies xAjax. ?>

Ici, on fait appel la mthode . Au dbut, j'ai eu du mal comprendre quoi elle pouvait servir. En fait, elle va ordonner xAjax de gnrer le Javascript de notre page une fois que nous lui aurons fourni toutes les informations qui lui sont ncessaires (nom des fonctions, etc.).

Attention, il faut mettre cette fonction en dbut de page, avant d'avoir envoy des informations au navigateur ! (Comme pour les headers, ou les session_start si vous voulez.)

Code : PHP - Slectionner <?php $xajax->printJavascript();// Fonction qui va afficher le Javascript de la page. ?>

La seconde mthode indispensable, , va afficher le Javascript gnr dans notre page xHTML. En effet, les applications AJAX reposent en grosse partie sur Javascript, mais pas besoin de connatre beaucoup ce langage pour utiliser xAjax ! Et c'est cela l'avantage, on ne s'embte plus avec le langage capricieux qu'est Javascript, xAjax s'en occupe !

Premier bilan
Bien retenir comment l'on cre une instance de xajax et quel est son rle. Puis on fait appel ensuite la mthode ) avant d'envoyer des infos au navigateur. Enfin, on fait appel la mthode entre les balises <HEAD></HEAD> pour afficher le Javascript.

C'est bien joli tout a, mais j'ai toujours rien sur mon cran, moi. C'est normal ? a l'est : disons que nous avons appris l le strict minimum mettre dans une page pour excuter une application AJAX. chaque fois que vous utilisez xAjax, il faut crer votre objet , et appeler les mthodes ncessaires ( et ). Retenez bien cela, c'est indispensable !

crire et appeler des fonctions avec xAjax


Maintenant que vous connaissez les bases, passons l'utilisation concrte de xAjax. Ce qu'on souhaite faire avec cette librairie, c'est excuter du code en asynchrone (sans rechargement de la page).

Comment programmer mon code qui sera excut en asynchrone ? Tout simplement en PHP ! Et c'est a, l'avantage !

Il faut crire le code excuter dans une fonction PHP, et l'enregistrer avec une mthode xAjax que je vais vous donner : Code : PHP - Slectionner

5 sur 20

27/03/2011 05:38

[xAjax] Applications AJAX faciles avec PHP et xAjax !

http://www.siteduzero.com/tutoriel-3-36169-xajax-applications-ajax-fa...

<?php $xajax->register(XAJAX_FUNCTION, 'MaFonctionPHP'); ?>

Au final, vous aurez ceci dans votre page : Code : PHP - Slectionner <?php function MaFonctionPHP(argument1, argument2, ...) { // Code excuter. } require_once('./xajax_core/xajax.inc.php'); $xajax = new xajax(); // On initialise l'objet xajax. $xajax->register(XAJAX_FUNCTION, 'MaFonctionPHP'); // Dclaration de la fonction MaFonctionPHP. $xajax->processRequest(); // Fonction qui va se charger de gnrer le Javascript partir des donnes que l'on a fournies xAjax. ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1 /DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <title>Page xajax</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <?php $xajax->printJavascript(); /* Fonction qui va afficher le Javascript de la page */ ?> </head> <body> <div id="block"></div> </body> </html>

Vous devriez comprendre sans encombre la totalit de ce code ; si ce n'est pas le cas, je vous conseille de relire le tutoriel depuis le dbut

Petit point trs important : il faut mettre le enregistr vos fonctions !

avant d'envoyer des informations au navigateur, mais aprs avoir

Ne mettez pas d' , ni de ni aucune fonction PHP susceptible d'envoyer des informations au navigateur dans vos fonctions ; ce stade, on n'affiche plus avec PHP mais avec des mthodes de xAjax que je vais vous dcrire plus loin.

Grce la mthode asynchrone .

, vous pouvez enregistrer des lments de votre code (des fonctions par exemple

) qui seront excute en

Trs facile de se rappeler de a : register signifie enregistrer et XAJAX_FUNCTION signifie fonction xAjax.

Vous devriez commencer comprendre comment fonctionne la librairie xAjax : au fil du code, vous fournissez xAjax les informations dont il a besoin (comme le nom des fonctions PHP, etc.) ; le moteur xAjax, grce ces informations, va gnrer lui-mme le Javascript (grce ), et l'afficher sur la page (avec ).

Comment excuter ma fonction PHP avec xAjax ? Pour excuter la fonction PHP pralablement crite et enregistre, on fait appel Javascript : Code : JavaScript - Slectionner xajax_MaFonctionPHP(argument1, argument2, ...);

On peut bien sr excuter ce code Javascript dans vnement : Code : HTML - Slectionner

6 sur 20

27/03/2011 05:38

[xAjax] Applications AJAX faciles avec PHP et xAjax !

http://www.siteduzero.com/tutoriel-3-36169-xajax-applications-ajax-fa...

<input type="button" value="AJAX" onclick="xajax_MaFonctionPHP(argument1, argument2, ...);">

Ou, si on a besoin de rafrachir quelque chose rgulirement (comme un chat) : Code : HTML - Slectionner <script> function refresh() { xajax_MaFonctionPHP(argument1, argument2,...); setTimeout(refresh, 5000); } </script>

Voil, c'est bte comme chou !

Deuxime bilan
On crit le code que xAjax devra excuter dans des fonctions PHP. On enregistre nos fonctions PHP de cette faon : Aprs avoir enregistr nos fonctions, on ajoute . .

Recevoir et traiter une rponse xAjax dans ses fonctions


Je vais maintenant vous apprendre crire et traiter vos fonctions PHP avec xAjax !

T'as un cerveau de poisson rouge, toi.

Tu viens de nous dire qu'il suffisait de programmer nos fonctions en PHP !

En effet, il faut bien programmer nos fonctions en PHP ; nanmoins, rappelez-vous que nous devons exclure de nos fonctions toute requte qui pourrait envoyer des informations au navigateur, comme ou .

Comment changer le contenu de ma page dynamiquement, alors ? J'y viens ! Aprs avoir utilis la classe de gnration du Javascript

, nous allons maintenant utiliser la classe qui gre les rponses

Voici la ligne que vous devez ajouter au dbut de toutes vos fonctions : Code : PHP - Slectionner <?php $reponse = new xajaxResponse(); ?>

Nous venons de crer une instance de la classe

Cette classe contient plusieurs mthodes intressantes nous permettant de modifier le contenu de la page grce aux rponses du serveur. Je ne les connais pas toutes, car il en existe un trs grand nombre, je vais donc vous donner les plus importantes ! Je vous les donne en bloc : Code : PHP - Slectionner <?php $reponse->assign('IdElement', 'Attribut', 'Valeur'); $reponse->call('MaFonctionJSAppeler'); $reponse->clear('IdElement', 'Attribut'); $reponse->script("code Javascript excuter"); $reponse->addEvent("IdElement", "Evenement", "ScriptExecuter"); ?>

La premire est ncessaire pour modifier le contenu : Code : PHP - Slectionner

7 sur 20

27/03/2011 05:38

[xAjax] Applications AJAX faciles avec PHP et xAjax !

http://www.siteduzero.com/tutoriel-3-36169-xajax-applications-ajax-fa...

<?php $reponse->assign('IdElement', 'Attribut', 'Valeurs'); ?>

Cette mthode va modifier Attribut de IdElement en Valeur. Concrtement, a donne : Code : PHP - Slectionner <?php $reponse->assign('block', 'innerHTML', 'Bonjour je m\'affiche grce une mthode xAjax!'); ?>

Ce code va remplacer ce qu'il y a dans mon div (c'est ce que signifie innerHTML), dont l'id est block, par la phrase Bonjour, je m'affiche grce une mthode xAjax ! .

Remarquez une chose : les mthodes de rponses xAjax n'acceptent que des lments avec un id ; si j'avais mis div , a n'aurait pas march. De mme, si vous avez un formulaire avec un champ texte, vous ne mettrez pas , mais directement l'id du champ !

La deuxime : Code : PHP - Slectionner <?php $reponse->call('MaFonctionJSAppeler'); ?>

C'est une mthode assez intressante, retenez seulement qu'elle sert appeler d'autres fonctions Javascript depuis son code PHP. Nous verrons une utilisation concrte un peu plus tard. Voici la troisime mthode qui permet d'effacer le contenu d'un champ : Code : PHP - Slectionner <?php $reponse->clear('IdElement', 'Attribut'); ?>

C'est trs simple, on prcise l'id d'un lment de formulaire par exemple, et un attribut (comme value), et le contenu sera entirement effac.

La quatrime, et pas des moindres : Code : PHP - Slectionner <?php $reponse->script("code Javascript excuter"); ?>

Vous pouvez passer directement en paramtre cette mthode du code Javascript qui sera excut.

Entre les guillemets, pensez bien chapper, grce un backslash (\), tous les caractres qui ncessitent de l'tre (\, ", ', etc.).

Enfin, la dernire sert attribuer un vnement une balise (par exemple Code : PHP - Slectionner

) :

<?php $reponse->addEvent("IdElement", "Evenement", "ScriptExecuter"); ?>

Vous connaissez dsormais les mthodes xAjax les plus courantes. Il y en a encore beaucoup (beaucoup beaucoup mme

), mais celles-ci sont les

8 sur 20

27/03/2011 05:38

[xAjax] Applications AJAX faciles avec PHP et xAjax !

http://www.siteduzero.com/tutoriel-3-36169-xajax-applications-ajax-fa...

plus utiles. Si vous souhaitez pousser vos connaissances, je vous donnerai un lien contenant la liste des mthodes existantes dans la conclusion !

Enfin, trs important, chaque fin de fonction, il faut retourner les donnes XML xAjax en procdant de cette faon (je le rpte : placer la fin de toutes vos fonctions, en guise de ): Code : PHP - Slectionner <?php return $reponse; ?>

En fait il s'agit seulement de retourner l'objet de rponse !

Attention ! J'insiste : n'oubliez pas de retourner l'objet la fin de vos fonctions, sinon votre script ne fonctionnera pas !

Troisime bilan
On crit le code excuter dans des fonctions. Pour interprter les rponses et changer le contenu de la page, on utilise la classe On change le contenu grce des mthodes comme , , etc. On ajoute la fin de toutes nos fonctions qui seront utilises par xAjax.

Un Chat en xAjax!
Je vous propose maintenant un exemple concret de ce que nous venons d'apprendre : le fameux t'Chat qui ne clignote pas ! faisons un bref rappel de l'ordre dans lequel vous devez crire votre code avec xAjax : Code : PHP - Slectionner <?php function Bidule($arg1, $arg2, ...) { // 1 - Cration de l'objet de rponse xajaxResponse. // 2 - Votre code excuter en asynchrone. // 3 - Appel d'une ou de plusieurs mthodes xAjax pour modifier le contenu de la page. // 4 - Retourner l'objet de rponse. } // 1 - Inclusion de la librairie xajax (avec require_once). // 2 - Cration de l'objet de gnration du Javascript xajax. // 3 - Enregistrement de vos fonctions avec register. // 4 - Appel de la mthode processRequest. // 5 - Entre les balises <HEAD></HEAD>, appel de la mthode printJavascript. Mais avant cela,

Je vous propose maintenant de raliser le chat afin de vous entraner. C'est assez simple : tout tient en une seule page. Faites d'abord le ncessaire pour dclarer tout ce qui est indispensable pour travailler avec xAjax, puis n'hsitez pas remonter pour chercher ce qu'il faut mettre : c'est le mtier qui rentre. Dans le body de votre page, mettez un div vide qui recevra les messages ainsi qu'un formulaire permettant poster un message, avec le nom de l'auteur et son message. Crez et dclarez les fonctions pour poster et afficher les messages, tout en sachant que nous les stockerons dans un fichier texte (.txt), la mthode avec une base de donnes MySQL tant vraiment trop lourde Et enfin, l'astuce pour rafrachir : un petit code comme celui-ci dans le head : Code : HTML - Slectionner <script> function refresh() { xajax_afficher(); setTimeout("refresh()", 5000); } </script>

Et dans le body, la fin de la page : Code : HTML - Slectionner

9 sur 20

27/03/2011 05:38

[xAjax] Applications AJAX faciles avec PHP et xAjax !

http://www.siteduzero.com/tutoriel-3-36169-xajax-applications-ajax-fa...

<script> refresh(); </script>

Allez, on code...

.....

.....

Dj ? Je ne vous crois pas.

.....

.....

Voici la solution : Code : PHP - Slectionner

10 sur 20

27/03/2011 05:38

[xAjax] Applications AJAX faciles avec PHP et xAjax !

http://www.siteduzero.com/tutoriel-3-36169-xajax-applications-ajax-fa...

<?php // // Notre fonction PHP pour afficher les messages : // function afficher() { $reponse = new xajaxResponse();// Cration d'une instance de xajaxResponse pour traiter les rponses $chat = '';// Initialisation de la variable $chat. $fichier_texte = fopen('./chat.txt', 'r');// On ouvre notre fichier texte en lecture seule. $chat = fread($fichier_texte, filesize('./chat.txt'));// On lit notre fichier et on stocke son conte $chat fclose($fichier_texte);//On ferme notre fichier texte. $reponse->assign('block', 'innerHTML', $chat);// Enfin, on remplace le contenu du div 'block' par le return $reponse; } // // Notre fonction PHP envoyer pour envoyer un message : // function envoyer($posteur, $message) { $reponse = new xajaxResponse();//Cration d'une instance de xajaxResponse pour traiter les rponses $fichier_texte = fopen('./chat.txt', 'a');//On ouvre notre fichier texte en criture seule. fwrite($fichier_texte, addslashes('<strong>' . htmlentities($posteur) . ':</strong>' . htmlentities( />'));// On stocke le message dans notre fichier. fclose($fichier_texte);// On ferme notre fichier texte. $reponse->clear('message', 'value');// On vide le champ contenant le message de l'utilisateur. $reponse->call('xajax_afficher');// On appelle la fonction afficher pour afficher les messages pour voie son message l'cran. return $reponse; } // // Ouverture de la librairie xajax, instanciation d'un objet de la classe xajax, puis dclaration de nos fon // require_once('./xajax_core/xajax.inc.php'); $xajax = new xajax(); //On initialise l'objet xajax. $xajax->register(XAJAX_FUNCTION, 'afficher');// On enregistre nos fonctions. $xajax->register(XAJAX_FUNCTION, 'envoyer'); $xajax->processRequest();// Fonction qui va se charger de gnrer le Javascript, partir des donnes que l' xAjax APRS AVOIR DCLAR NOS FONCTIONS. ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <title>Chat xAjax</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <?php $xajax->printJavascript(); /* Affiche le Javascript */?> <script type="text/javascript"> function refresh()// Code javascript qui va appeler la fonction afficher toutes les 5 second { xajax_afficher(); setTimeout(refresh, 5000); } </script> </head> <body> <div id="block"></div> <form action=""> <fieldset> <legend>Entrer ici votre message :</legend> <div> <label>Nom : <input type="text" size="15" id="posteur" /></label><br /> <label>Message : <input type="text" size="50" id="message" /></label><br /> <input type="submit" value="Envoyer" onclick="xajax_envoyer(document.getElementByI document.getElementById('message').value); return false;" /> </div> </fieldset> </form> <script type="text/javascript"> refresh();//On appelle la fonction refresh() pour lancer le script. </script> </body> </html>

Voil : vous pouvez tester, c'est fonctionnel ! Notez nanmoins que c'est trs moche et peu optimis Vous pouvez l'amliorer si a vous amuse, ou si vous en avez l'utilit, mais sachez que ce chat sature assez vite (je n'ai jamais eu l'occasion de tester combien de personnes au maximum il pourrait supporter, mais a ne doit pas tre trs lev).

xAjax et l'encodage de caractres


Voici une partie traitant d'un problme rcurrent chez les utilisateurs de xAjax : l'encodage des caractres !

11 sur 20

27/03/2011 05:38

[xAjax] Applications AJAX faciles avec PHP et xAjax !

http://www.siteduzero.com/tutoriel-3-36169-xajax-applications-ajax-fa...

Vous avez srement d remarquer que les caractres spciaux (comme , , , etc.) ne passaient pas correctement sur le chat. Soyez trs attentif, c'est un peu compliqu ! Il faut savoir que, par dfaut, xAjax traite les caractres selon le jeu de caractres UTF-8 ; si votre site est encod en UTF-8, pas la peine de vous attarder sur cette partie. En revanche si vous utilisez un autre jeu de caractres comme l'ISO-8859-1, vous risquez d'avoir quelques petits problmes d'accentuation ! Contrairement la version stable de xAjax, la version bta (celle que nous utilisons dans ce tutoriel) ne semble pas grer correctement l'encodage des caractres. Pour pouvoir conserver un site encod en ISO-8859-1, nous allons donc devoir utiliser une petite mthode alternative ! Je vous explique un peu le problme (parce qu'il y a une petite subtilit bien saisir). Lorsque xAjax traite des donnes, il les encode automatiquement en UTF-8. C'est un peu dommage pour nous parce que c'est justement ce qu'on ne veut pas qu'il fasse ! La subtilit rside dans le fait que pour l'affichage des donnes, les mthode fournies par xAjax fonctionnent parfaitement. Seulement pour ce qui est de la rcupration des donnes par l'intermdiaire d'un formulaire et leur enregistrement, ces mthodes ne fonctionnent pas

Le but du jeu est simple : comme xAjax encode en UTF-8 les informations qu'il reoit par les formulaires, nous allons les reconvertir en ISO-8859-1 avant de les utiliser ! Pour cela on utilise la fonction PHP qui permet de convertir des donnes encodes UTF-8 en donnes encodes ISO-8859-1 !

Reprenons ensemble le script du chat (j'espre que vous l'avez bien compris) : nous recevons depuis le formulaire le pseudo de l'utilisateur et son message. Ils ont donc t automatiquement encods en UTF-8. Nous allons appliquer la mthode que je vous ai cite plus haut, en mettant un petit sur les variables posteur et message juste avant de les enregistrer dans le fichier texte ! Nous allons donc modifier cette ligne se trouvant dans notre fonction envoyer : Code : PHP - Slectionner <?php fwrite($fichier_texte, addslashes('<strong>' . htmlentities($posteur) . ':</strong>' . htmlentities($message) />'));// On stocke le message et le nom de l'auteur dans notre fichier. ?>

et ajouter nos comme ceci : Code : PHP - Slectionner <?php fwrite($fichier_texte, addslashes('<strong>' . htmlentities(utf8_decode($posteur)) . ':</strong>' . htmlentit />'));// On stocke le message et le nom de l'auteur dans notre fichier. ?>

Il est important d'appliquer encodes dans le mauvais jeu de caractres !

avant

dans cet exemple, sinon

convertira des donnes

Enfin, pour ce qui est de l'affichage des donnes, je vous avais dit qu'une mthode xAjax fonctionnait parfaitement. Cette mthode est , on l'appelle depuis l'objet xajax de cette faon : Code : PHP - Slectionner <?php $xajax->setCharEncoding('iso-8859-1');// On prcise xAjax qu'on souhaite travailler en ISO-8859-1. ?>

Rappelez-vous que cette mthode ne fonctionne que dans le cadre de l'affichage des donnes ! Si vous rcuprez des donnes depuis un formulaire, vous devez les traiter avec mme si vous avez utilis

Voici donc le chat intgrant la gestion du jeu de caractres ISO-8859-1 : Code : PHP - Slectionner

12 sur 20

27/03/2011 05:38

[xAjax] Applications AJAX faciles avec PHP et xAjax !

http://www.siteduzero.com/tutoriel-3-36169-xajax-applications-ajax-fa...

<?php // // Notre fonction PHP pour afficher les messages : // function afficher() { $reponse = new xajaxResponse();// Cration d'une instance de xajaxResponse pour traiter les rponses $chat = '';// Initialisation de la variable $chat. $fichier_texte = fopen('./chat.txt', 'r');// On ouvre notre fichier texte en lecture seule. $chat = fread($fichier_texte, filesize('./chat.txt'));// On lit notre fichier et stocke son contenu fclose($fichier_texte);// On ferme notre fichier texte. $reponse->assign('block', 'innerHTML', $chat);// Enfin, on remplace le contenu du div 'block' par le return $reponse; } // // Notre fonction PHP envoyer pour envoyer un message // function envoyer($posteur, $message) { $reponse = new xajaxResponse();// Cration d'une instance de xajaxResponse pour traiter les rponses $fichier_texte = fopen('./chat.txt', 'a');//On ouvre notre fichier texte en criture seule. fwrite($fichier_texte, addslashes('<strong>' . htmlentities(utf8_decode($posteur)) . ':</strong>' . />'));// On stocke le message dans notre fichier. fclose($fichier_texte);// On ferme notre fichier texte. $reponse->clear('message', 'value');// On vide le champ contenant le message de l'utilisateur. $reponse->call('xajax_afficher');// On appelle la fonction afficher pour afficher les messages et po l'cran return $reponse; } // //Ouverture de la librairie xajax, instanciation d'un objet de la // require_once('./xajax_core/xajax.inc.php'); $xajax = new xajax(); // On initialise l'objet xajax. $xajax->setCharEncoding('iso-8859-1');// On prcise xAjax qu'on $xajax->register(XAJAX_FUNCTION, 'afficher');// On enregistre nos $xajax->register(XAJAX_FUNCTION, 'envoyer'); $xajax->processRequest();// Fonction qui va se charger de gnrer NOS FONCTIONS. ?>

classe xajax, puis dclaration de nos fonc

souhaite travailler en ISO-8859-1. fonctions. le Javascript, partir des donnes que l'

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <title>Chat xAjax</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <?php $xajax->printJavascript(); /* Affiche le Javascript. */?> <script type="text/javascript"> function refresh() // Code Javascript qui va appeler la fonction afficher toutes les 5 secon { xajax_afficher(); setTimeout(refresh, 5000); } </script> </head> <body> <div id="block"></div> <form action=""> <fieldset> <legend>Entrer ici votre message :</legend> <div> <label>Nom : <input type="text" size="15" id="posteur" /></label><br /> <label>Message : <input type="text" size="50" id="message" /></label><br /> <input type="submit" value="Envoyer" onclick="xajax_envoyer(document.getElementByI document.getElementById('message').value); return false;" /> </div> </fieldset> </form> <script type="text/javascript"> refresh();// On appelle la fonction refresh() pour lancer le script. </script> </body> </html>

Si votre site est encod en ISO-8859-1, prenez l'habitude d'appeler systmatiquement

Quatrime bilan
On appelle la mthode .

13 sur 20

27/03/2011 05:38

[xAjax] Applications AJAX faciles avec PHP et xAjax !

http://www.siteduzero.com/tutoriel-3-36169-xajax-applications-ajax-fa...

Si on rcupre des donnes depuis un formulaire, on les traite avec la fonction PHP

Traiter des formulaires avec xAjax


Je tiens d'abord remercier xbb de m'avoir touch un mot de cette faon de traiter les formulaires avec xAjax que je ne connaissais pas, et qui m'a semble trs intressante !

Mais Mais n'avons-nous pas dj trait des formulaires avec xAjax dans les sous-parties prcdentes ? En effet, nous avons dj appris traiter des formulaires, mais c'taient de petits formulaires avec une ou deux valeurs rcuprer.... Rappelez-vous de l'exemple du chat ; pour rcuprer le pseudo et le message de l'utilisateur, nous tions obligs de passer deux arguments notre fonction xajax de cette faon : Code : JavaScript - Slectionner xajax_envoyer(document.getElementById('posteur').value, document.getElementById('message').value);

Nous avions un argument pour le pseudo, et un argument pour le message. Vous me suivez ? Bon, maintenant imaginez que nous ayons dans notre formulaire un champ pseudo, un autre mot de passe, un autre e-mail et enfin un champ biographie. Il faudrait alors passer notre fonction quatre arguments ! Ce n'est pas grable mais heureusement xAjax intgre un systme de gestion des formulaires extrmement simple, qui permet de rcuprer les valeurs des formulaires contenant beaucoup de donnes. Nous allons donc remplacer tous ces arguments par un seul : Voici ce que cela donne sur notre chat : Code : JavaScript - Slectionner xajax_envoyer(xajax.getFormValues('NomDuFormulaire')); .

On ne garde ainsi qu'un seul argument contenant toutes les donnes de notre formulaire. Il va maintenant falloir le traiter avec PHP pour rcuprer ces valeurs (sinon a ne nous sert pas grand chose )! retourne PHP un tableau ( ), organis de la mme faon qu'un tableau $_GET ou $_POST, c'est--dire contenant des cls qui correspondent aux noms des items de notre formulaire (par exemple ici nous aurons deux cls : posteur et message). Vous voyez que ce n'est pas compliqu ! Enfin j'attire aussi votre attention sur un dernier point : lorsque vous utilisez formulaire un id et un name (qui doivent tre identiques). Il ne nous reste plus qu' modifier notre fonction Code : PHP - Slectionner : , vous devez spcifier tous les lments de votre

<?php // // Notre fonction PHP envoyer pour envoyer un message : // function envoyer($donnees_formulaire) { $reponse = new xajaxResponse();// Cration d'une instance de xajaxResponse pour traiter les rponses $fichier_texte = fopen('./chat.txt', 'a');// On ouvre notre fichier texte en criture seule. fwrite($fichier_texte, addslashes('<strong>' . htmlentities(utf8_decode($donnees_formulaire['posteur />'));// On stocke le message dans notre fichier, REGARDEZ BIEN ICI COMMENT SONT EXTRAITES NOS DONNES DE FO fclose($fichier_texte);// On ferme notre fichier texte. $reponse->clear('message', 'value');// On vide le champ contenant le message de l'utilisateur. $reponse->call('xajax_afficher');// On appelle la fonction afficher pour afficher les messages et po return $reponse; } ?>

Et voici le chat modifi : Code : PHP - Slectionner

14 sur 20

27/03/2011 05:38

[xAjax] Applications AJAX faciles avec PHP et xAjax !

http://www.siteduzero.com/tutoriel-3-36169-xajax-applications-ajax-fa...

<?php // // Notre fonction PHP pour afficher les messages : // function afficher() { $reponse = new xajaxResponse();// Cration d'une instance de xajaxResponse pour traiter les rponses $chat = '';// Initialisation de la variable $chat. $fichier_texte = fopen('./chat.txt', 'r');// On ouvre notre fichier texte en lecture seule. $chat = fread($fichier_texte, filesize('./chat.txt'));//On lit notre fichier et on le stocke son con fclose($fichier_texte);// On ferme notre fichier texte. $reponse->assign('block', 'innerHTML', $chat);//Enfin, on remplace le contenu du div 'block' par le return $reponse; } // // Notre fonction PHP envoyer pour envoyer un message : // function envoyer($donnees_formulaire) { $reponse = new xajaxResponse();// Cration d'une instance de xajaxResponse pour traiter les rponses $fichier_texte = fopen('./chat.txt', 'a');// On ouvre notre fichier texte en criture seule. fwrite($fichier_texte, addslashes('<strong>' . htmlentities(utf8_decode($donnees_formulaire['posteur />'));// On stocke le message dans notre fichier. fclose($fichier_texte);// On ferme notre fichier texte $reponse->clear('message', 'value');// On vide le champ contenant le message de l'utilisateur. $reponse->call('xajax_afficher');// On appelle la fonction afficher pour afficher les messages et po return $reponse; } // //Ouverture de la librairie xajax, instanciation d'un objet de la // require_once('./xajax_core/xajax.inc.php'); $xajax = new xajax(); // On initialise l'objet xajax. $xajax->setCharEncoding('iso-8859-1');// On prcise xAjax qu'on $xajax->register(XAJAX_FUNCTION, 'afficher');// On enregistre nos $xajax->register(XAJAX_FUNCTION, 'envoyer'); $xajax->processRequest();// Fonction qui va se charger de gnrer ?>

classe xajax, puis dclaration de nos fonc

souhaite travailler en ISO-8859-1. fonctions. le Javascript, partir des donnes que l'

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <title>Chat xAjax</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <?php $xajax->printJavascript(); /* Affiche le Javascript */?> <script type="text/javascript"> function refresh()// Code Javascript qui va appeler la fonction afficher toutes les 5 second { xajax_afficher(); setTimeout(refresh, 5000); } </script> </head> <body> <div id="block"></div> <form action=""> <fieldset> <legend>Entrer ici votre message :</legend> <div> <label>Nom : <input type="text" size="15" id="posteur" name="posteur" /></label><b <label>Message : <input type="text" size="50" id="message" name="message" /></labe <input type="submit" value="Envoyer" onclick="xajax_envoyer(xajax.getFormValues(th </div> </fieldset> </form> <script type="text/javascript"> refresh();// On appelle la fonction refresh() pour lancer le script. </script> </body> </html>

Vous remarquerez que j'ai utilis

la place du nom du formulaire et que cela fonctionne merveille !

Comme vous pouvez le voir, c'est trs simple et a nous permet de ne passer qu'un seul argument nos fonctions, ce qui facilite grandement la tche de gestion des donnes des gros formulaires, comme les formulaires d'inscription, de boutiques en ligne, etc.

Cinquime bilan :

15 sur 20

27/03/2011 05:38

[xAjax] Applications AJAX faciles avec PHP et xAjax !

http://www.siteduzero.com/tutoriel-3-36169-xajax-applications-ajax-fa...

On utilise pour transmettre les donnes du formulaire. On n'oublie pas de spcifier un id et un name identiques sur chaque lment du formulaire.

Crer un message de chargement avec xAjax


J'ai dj eu maintes reprises la question et je n'ai jamais pris le temps d'y rpondre : il est en effet possible d'afficher un message de chargement lorsque xAjax effectue une requte. Bon, c'est du Javascript pur et dur mais ce n'est point compliqu ! La technique consiste crer deux petites fonctions en Javascript : une qui affichera le message, une qui le cachera. Lorsqu'on lance la requte, on affiche le message ; ds qu'on a reu la rponse, on le cache. Rien ajouter, la technique est d'une simplicit enfantine ! Nous allons ajouter un qui contiendra le message de chargement en dbut de page : Code : HTML - Slectionner <div id="loadingMessage" style="font-size: 15px; color: white; position: fixe; visibility: hidden; padding: 5px; background-color: red; width: 90px;">Chargement...</div>

Ici je lui donne l'id

, mais libre vous d'en choisir un autre de la page:

Codons maintenant la premire fonction Javascript qui affiche le message, cette fonction est placer dans la balise Code : JavaScript - Slectionner

function printLoadingMessage(loadingMessageText) { if(!loadingMessageText)// Si aucun message personnalis n'a t prcis, on lui donne le message par dfaut. { loadingMessageText = 'Chargement...'; } var parentNode = document.getElementById('loadingMessage');// On rcupre le nud parent qui est la balise div. var textNode = document.createTextNode(loadingMessageText);// On cre un nud enfant qui est tout simplement le texte. parentNode.replaceChild(textNode, parentNode.firstChild);// On accroche le texte la balise div. document.getElementById('loadingMessage').style.visibility='visible';// Puis on rend visible le bloc. }

Ce n'est pas un cours de Javascript mais je vous explique brivement : on a une variable notre message de chargement, on intgre ce message dans notre balise , puis on le rend visible. Enfin la fonction Javascript qui va cacher le message (elle aussi placer dans la balise Code : JavaScript - Slectionner de la page) :

qui contient le texte afficher dans

function hideLoadingMessage() { document.getElementById('loadingMessage').style.visibility='hidden';// On rend le message invisible. }

Cette fois-ci, aucun message modifier : on rend juste le

invisible pour cacher le message de chargement.

Nous avons tout cod, il nous suffit prsent d'appeler la fonction (comme xajax_envoyer ou xajax_afficher), puis appeler Voici le code final: Code : PHP - Slectionner

chaque fois qu'on fait appel une fonction xAjax chaque fin de fonction.

16 sur 20

27/03/2011 05:38

[xAjax] Applications AJAX faciles avec PHP et xAjax !

http://www.siteduzero.com/tutoriel-3-36169-xajax-applications-ajax-fa...

<?php // // Notre fonction PHP pour afficher les messages : // function afficher() { $reponse = new xajaxResponse();// Cration d'une instance de xajaxResponse pour traiter les rponses $chat = '';// Initialisation de la variable $chat. $fichier_texte = fopen('./chat.txt', 'r');// On ouvre notre fichier texte en lecture seule. $chat = fread($fichier_texte, filesize('./chat.txt'));//On lit notre fichier et on stocke son conten fclose($fichier_texte);//On ferme notre fichier texte. $reponse->assign('block', 'innerHTML', $chat);// Enfin, on remplace le contenu du div block par le c $reponse->script("hideLoadingMessage();");// ON CACHE LE MESSAGE DE CHARGEMENT. return $reponse; } // // Notre fonction PHP envoyer pour envoyer un message : // function envoyer($donnees_formulaire) { $reponse = new xajaxResponse();// Cration d'une instance de xajaxResponse pour traiter les rponses $fichier_texte = fopen('./chat.txt', 'a');// On ouvre notre fichier texte en criture seule. fwrite($fichier_texte, addslashes('<strong>' . htmlentities(utf8_decode($donnees_formulaire['posteur />'));//On stocke le message dans notre fichier. fclose($fichier_texte);// On ferme notre fichier texte. $reponse->clear('message', 'value');// On vide le champ contenant le message de l'utilisateur. $reponse->call('xajax_afficher');// On appelle la fonction afficher pour afficher les messages et po $reponse->script("hideLoadingMessage();");// ON CACHE LE MESSAGE DE CHARGEMENT. return $reponse; } // //Ouverture de la librairie xajax, instanciation d'un objet de la // require_once('./xajax_core/xajax.inc.php'); $xajax = new xajax(); // On initialise l'objet xajax. $xajax->setCharEncoding('iso-8859-1');// On prcise xAjax qu'on $xajax->register(XAJAX_FUNCTION, 'afficher');// On enregistre nos $xajax->register(XAJAX_FUNCTION, 'envoyer'); $xajax->processRequest();// Fonction qui va se charger de gnrer ?>

classe xajax, puis dclaration de nos fonc

souhaite travailler en ISO-8859-1. fonctions. le Javascript, partir des donnes que l'

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <title>Chat xAjax</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <?php $xajax->printJavascript(); /* Affiche le Javascript */?> <script type="text/javascript"> function refresh()// Code Javascript qui va appeler la fonction afficher toutes les 5 second { printLoadingMessage('Rcupration des messages...');// On va appeler xajax_afficher, alors j xajax_afficher(); setTimeout(refresh, 5000); } function printLoadingMessage(loadingMessageText) { if(!loadingMessageText)//Si aucun message personnalis n'a t prcis, on lui donne { loadingMessageText = 'Chargement...'; } var parentNode = document.getElementById('loadingMessage');// On rcupre le nud pa var textNode = document.createTextNode(loadingMessageText);//On cre un nud enfant parentNode.replaceChild(textNode, parentNode.firstChild);// On accroche le texte l document.getElementById('loadingMessage').style.visibility='visible';// Puis on rend } function hideLoadingMessage() { document.getElementById('loadingMessage').style.visibility='hidden';// On rend le me } </script> </head> <body> <div id="loadingMessage" style="font-size: 15px; color: white; position: fixe; visibility: h <div id="block"></div> <form action=""> <fieldset> <legend>Entrer ici votre message :</legend> <div> <label>Nom : <input type="text" size="15" id="posteur" name="posteur" /></label><b <label>Message : <input type="text" size="50" id="message" name="message" /></labe <input type="submit" value="Envoyer" onclick="printLoadingMessage('Envoi du messag </div> </fieldset> </form> <script type="text/javascript"> refresh();// On appelle la fonction refresh() pour lancer le script. </script>

17 sur 20

27/03/2011 05:38

[xAjax] Applications AJAX faciles avec PHP et xAjax !

http://www.siteduzero.com/tutoriel-3-36169-xajax-applications-ajax-fa...

Voil, j'espre que vous avez compris le systme car je veux bien croire que cette partie reste un peu plus ambige que le reste, mais sachez que si vous ne la comprenez pas (ou si vous ne voulez pas la comprendre ), ce n'est pas trs important car elle ne fait pas partie intgrante de xAjax, c'est plutt un bonus.

Rsum des mthodes xAjax


Voici un petit rsum, sous forme de tableau, des mthodes et des classes xAjax. Elles sont dans l'ordre o vous devez les dclarer.

Classe Main
Utilit Crer une instance d'un objet xAjax. Dfinir le jeu de caractres. Enregistrer une fonction. Indiquer xAjax de gnrer le Javascript ncessaire au fonctionnement du script. Afficher le Javascript de la page. Code

La classe Rponse
Fonction Crer une instance d'un objet de rponse xAjax. Modifier le contenu de la page. Appeler une fonction JavaScript. Effacer un champ. Excuter un script Javascript. Retourner les rsultats. Code

Les fonctions Javascript de xAjax


Fonction Retourner un tableau contenant les donnes d'un formulaire. Code

Q.C.M.
Comment dclarer un nouvel objet xAjax ?
$xajax = new $xajax(); $xajax = xajax(); $xajax = new xajax(); $xajax = new $xajax;

Ce code est-il correct ? Code : PHP - Slectionner

18 sur 20

27/03/2011 05:38

[xAjax] Applications AJAX faciles avec PHP et xAjax !

http://www.siteduzero.com/tutoriel-3-36169-xajax-applications-ajax-fa...

<?php // //Nos Fonctions // function addition($variable) { $reponse = new xajaxResponse();//on cre une instance de la classe xajaxResponse. $variable = $variable + 5; $reponse->assign('block', 'innerHTML', $variable);//On modifie le contenu de la page. return $reponse;//On retourne le rsultat. } // //XAJAX // require('./xajax_core/xajax.inc.php'); $xajax = new xajax();//On cre une instance de la classe xajax. $xajax->processRequest();//On indique xajax qu'il devra se charger de faire les requtes. $xajax->register(XAJAX_FUNCTION, 'addition');//On enregistre notre fonction php addition. ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1 /DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <title>Page xajax</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <?php $xajax->printJavascript();/*Affichage du javascript ncessaire.*/ ?> </head> <body> <div id="block"></div> </body> </html>

Oui, le code est correct. Non, le code n'est pas correct.

O placer l'appel la mthode suivante ? Code : PHP - Slectionner <?php $xajax->printJavascript(); ?>

Entre les balises <body></body>. Entre les balises <head></head>. Au dbut de la page, avant $xajax->processRequest().

Vous souhaitez dclarer la fonction PHP suivante : Code : PHP - Slectionner <?php function connexion($login, $mot_de_passe) { //Code de connexion... } ?>

Quelle est la bonne syntaxe pour dclarer cette fonction ?


$xajax->register(XAJAX_FUNCTION, 'connexion'); $xajax->register(XAJAX_FUNCTION, 'connexion()'); $xajax->register(XAJAX_FUNCTION, 'connexion($login, $mot_de_passe)'); $xajax->register(XAJAX_FUNCTION, 'connexion($login, $mot_de_passe);');

quoi sert

la fin de nos fonctions PHP ?


dire que cette fonction PHP est du XML. prciser xAjax que notre page est code en XML. rcuperer et retourner les informations XML de xAjax la page.

Statistiques de rponses au QCM

xAjax est une librairie magnifique qui allie puissance et facilit. Je vous ai enseign tout ce que je connaissais d'elle, mais elle cache beaucoup

19 sur 20

27/03/2011 05:38

[xAjax] Applications AJAX faciles avec PHP et xAjax !

http://www.siteduzero.com/tutoriel-3-36169-xajax-applications-ajax-fa...

d'autres choses ! Je vous conseille d'aller voir ici pour plus d'infos, c'est malheureusement en anglais http://www.xajax-project.org/en/docs-tutorials/api-docs/ xAjax n'est videmment pas destine la cration de chat. Si vous avez des connaissances en DHTML, elle fera merveille. Vous pourrez crer des applications Web qui ressembleront des applications logicielles, je pense par exemple aux fentres qui s'ouvrent pour demander des renseignements l'utilisateur, ou encore au drag-and-drop qui permettrait, par exemple, de dplacer des objets vers la corbeille, etc. Nanmoins, si vous souhaitez vous lancer dans cette direction, il faudra vous y connatre un minimum en Javascript, et dans ce cas, il est peut-tre plus intressant de manipuler l'objet XMLHTTPRequest pour ceux qui connaissent ! Pour conclure, mettons fin aux personnes mdisantes qui pensent et disent que xAjax est une bourde de plus parmi les frameworks PHP : bien sr, xAjax a ses limites, il ne faut d'ailleurs jamais les oublier ou se laisser emporter par cette facilit qui donne pourtant de si beaux rsultats ; bien sr qu'utiliser AJAX avec XMLHTTPRequest c'est beaucoup plus clean et soft que de coder avec xAjax qui alourdit forcment le script ; encore une fois, bien sr que c'est mieux de ne pas utiliser xAjax, mais plutt de coder tout soi-mme ! Mais il y a quelque chose que tout le monde doit admettre : c'est qu'utiliser AJAX avec xAjax, c'est beaucoup plus simple. Alors retenons tous une chose : adapter son code, sa technique, et son langage au rsultat que l'on souhaite obtenir. Tout comme on ne code pas un logiciel de traitement d'images avec PHP, on n'utilise pas non plus xAjax pour faire un jeu 2D bourr de requtes asynchrones. xAjax est parfaitement adapt pour des petites applications (scripts de connexion, d'inscription, etc., voire des petits chat comme nous l'avons fait), mais ne l'est pas pour des jeux en ligne par exemple. Au mme titre qu'il ne faut pas hsiter utiliser XMLHTTPRequest pour des gros scripts AJAX, il ne faut pas hsiter utiliser xAjax pour des petits scripts.

Lire aussi
Forum Tutoriels News Mettre jour un div [Ajax/PHP] Problme de session Se connecter MySQL avec PDO [Site Web] Bta testeurs [minichat ajax/php] script qui plante le navigateur o_0 Amusons-nous avec le PHP et le SQL Golocalisez vos visiteurs grce leur IP Concevez votre site web avec PHP et MySQL Utiliser MySQL en PHP sans POO Un diaporama original en CSS La Gendarmerie nationale passe Ubuntu ! Les box gagnent en puissance La boutique de Google officiellement lance aux tats-Unis Bug au niveau des SMS chez Orange : Bouygues Telecom mis en cause Apple rejoint le projet OpenJDK

20 sur 20

27/03/2011 05:38