








|
AJAX - Interrogez votre serveur avec
JavaScript


Savez-vous que JavaScript est capable de
se connecter à un serveur WEB, de lire des pages, d'en recuperer le
contenu ? Et simplement en plus ? Explications ! AJAX ?
 L'AJAX (ou Asynchronous
JavaScript And XML) n'est pas un langage, mais plutôt l'utilisation
de plusieurs technologies les unes avec les autres. Elle va
permettre, dans notre exemple, à une page web une fois affichée de
se connecter à une autre page, d'en tirer des informations et de se
mettre a jour sans se
réactualiser.
L'exemple
 Nous allons faire une
aide pour trouver plus rapidement un pseudo libre lors de
l'inscription sur un site. Nous allons avoir besoin de : - un
script php pour verifier si le pseudo demandé est libre ou non -
un script JavaScript pour interoger a chaque frappe dans le
formulaire le script PHP et ainsi savoir si le pseudo est
libre. Si vous ne comprennez pas trop cet exemple, essayez de
trouver un pseudo de libre a cette page : http://www.editeurjavascript.com/scripts/exemples/ajax.php
On
commence par le script PHP
 Voici le code de la page
"verifpseudo.php" :
<? // // VERIFICATION EN LIVE DU
PSEUDO //
// CONNECION SQL mysql_connect("localhost",
"user", "password"); mysql_select_db("base");
//
VERIFICATION $result = mysql_query("SELECT pseudo FROM membres
WHERE
pseudo='".$_GET["pseudo"]."'"); if(mysql_num_rows($result)>=1) echo
"1"; else echo
"2"; ?>
En gros, ce script ca
verifier si le pseudo pseudo est libre (dans ce cas, il retourne
"2") ou déjà pris (il retourne alors "1"). L'adresse de ce
script, sera :
http://www.editeurjavascript.com/scripts/exemples/verifpseudo.php
Commençons notre formulaire
:
 Nous allons créer une
page toute simple nommée "ajax.php" avec un seul champ de formulaire
(pour le pseudo) accompagné d'un bloc <div> :
<!doctype html public "-//w3c//dtd html 4.0
transitional//en"> <html> <head> <title>AJAX</title> </head> <body> <form
action=""> <input type="text" name="pseudo"
onKeyUp="verifPseudo(this.value)" /> <div
id="pseudobox"></div> </form> </body> </html>
Vous
remarquerez l'evenement onKeyUp qui lance la fonction JavaScript
"verifPseudo", en passant le pseudo tapé en parametre de la
fonction, dès qu'une lettre est tapée dans le champ.
Agrementer le tout de
JavaScript :
 |  Nous allons maintenant
créer les fonctions qui vont verifier en temps réèl la disponibilité
du pseudo. Ce script est ajouté a la page "ajax.php" :
<script
type="text/javascript"> function
writediv(texte) { document.getElementById('pseudobox').innerHTML
= texte; }
function
verifPseudo(pseudo) { if(pseudo
!=
'') { if(pseudo.length<2) writediv('<span
style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo
est trop
court</span>'); else
if(pseudo.length>30) writediv('<span
style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo
est trop
long</span>'); else
if(texte =
file('http://www.editeurjavascript.com/scripts/exemples/verifpseudo.php?pseudo='+escape(pseudo))) { if(texte
==
1) writediv('<span
style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo
est deja
pris</span>'); else
if(texte ==
2) writediv('<span
style="color:#1A7917"><b>'+pseudo+' :</b> ce pseudo
est
libre</span>'); else writediv(''); } }
}
function
file(fichier) { if(window.XMLHttpRequest)
//
FIREFOX xhr_object
= new XMLHttpRequest(); else
if(window.ActiveXObject) //
IE xhr_object
= new ActiveXObject("Microsoft.XMLHTTP");
else
return(false);
xhr_object.open("GET", fichier,
false); xhr_object.send(null);
if(xhr_object.readyState == 4)
return(xhr_object.responseText); else
return(false); } </script>
Voici
l'explication des fonctions : • writediv : cette fonctuion
permet d'ecrire ce qu'on lui passe en parametre dans le bloc
<div> dont l'ID est "pseudobox" (il est dans notre formulaire
du début). • file : c'est la fonction qui se connecte a la
page passée en parametre, et retourne son contenu. •
verifPseudo : c'est cette fonction qui est appelée a chaque
frappe dans le champ "pseudo" de notre formulaire. Elle verifie la
longueur du pseudo tapé (si le pseudo fait moins de 2 ou plus de 30
caractères, un message d'erreur s'affiche) puis, si tout est bon,
lance la fonction file qui se connectera a notre script PHP pour
verifier si le pseudo tapé est libre.
Au final, voici le code
HTML complet de la page "ajax.php" :
<!doctype html public "-//w3c//dtd html 4.0
transitional//en"> <html> <head> <title>AJAX</title>
<script
type="text/javascript"> function
writediv(texte) { document.getElementById('pseudobox').innerHTML
= texte; }
function verifPseudo(pseudo) { if(pseudo
!= '') { if(pseudo.length<2) writediv('<span
style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo
est trop court</span>'); else
if(pseudo.length>30) writediv('<span
style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo
est trop long</span>'); else if(texte =
file('http://www.editeurjavascript.com/scripts/exemples/verifpseudo.php?pseudo='+escape(pseudo))) { if(texte
== 1) writediv('<span
style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo
est deja pris</span>'); else if(texte ==
2) writediv('<span
style="color:#1A7917"><b>'+pseudo+' :</b> ce pseudo
est
libre</span>'); else writediv(texte); } }
}
function
file(fichier) { if(window.XMLHttpRequest) //
FIREFOX xhr_object = new XMLHttpRequest(); else
if(window.ActiveXObject) // IE xhr_object = new
ActiveXObject("Microsoft.XMLHTTP"); else return(false); xhr_object.open("GET",
fichier,
false); xhr_object.send(null); if(xhr_object.readyState == 4)
return(xhr_object.responseText); else
return(false); } </script>
</head> <body>
<form
action=""> <input type="text" name="pseudo"
onKeyUp="verifPseudo(this.value)" /> <div
id="pseudobox"></div> </form>
</body> </html>
Résultat
:

Testez la disponibilité de votre pseudo :
Annotations des
visiteurs :
 | 
De yodark - le 10-12-2005
 génial cette fonction ajax j'avais
encore jamais vu ! par contre faire une requete SQL a
chaque lettre tappée dans une base de 10'000 nom c'est
jouable? |
De BackInBiz - le 15-12-2005
 J'ai rajouté un petit bout de code
pour activé ou désactivé la valdidation du formulaire si
le pseudo est correct ou pas et pareil si le pseudo est
renseigné ou pas :)
Je trouve ca essentiel
! |
De jabs - le 17-12-2005
 Yodark>>> Quand il y a des
énomes enregistrement (ex 100000 enregistrement sur une
table) c' est là que XML joue son rôle dans
AJA(Xml). On charge le contenu de la table dans un
fichier XML par une requête PHP et c'est ce fichier XML
que va lire le javascript . ;-) |
De asynchronous - le
22-12-2005
 J'ai testé des requêtes avec LIKE
en clause WHERE sur une table de 80 000 enregsitrements.
Les résultats sont très bons. Je peux même me permettre
d'afficher le résultat de la requête en temps réel.
C'est impressionnant. |
De frossejs - le 19-01-2006
 Ca à l'air interessant, on passe en
client riche, mais il y a rien à ajouter sur le serveur
si ce n'est php ou asp ?
Actuellement j'utilise
flash qui fait la même chose, mais il faut le plug-in
sur la machine client.
toujours ce problème des
différentes version java sur client. |
De artotal - le 15-03-2006
 Bonjour, je cherche plus
d'explication sur l'ajax, ainsi qu'un exemple d'appel de
fichier xml en php, pour l'ajax ?¿ Merci
d'avance. |
De ALBATROS - le 23-05-2006
 Bonjour, Je trouves que c'est
trés interessant comme astuce, je suis débutant et je
cherches comment éviter le clignotement de la page lors
de sa Rafraîchissement comme sur plusieurs applications
de CHAT en PHP. J'arrives plus à comprendre :( |
De sai95 - le 01-06-2006
 Super tuto ! mais comment faire
lorsqu'on a plusieurs champs
? | | >>
Poster
une annotation sur cette astuce

Retour à
la liste des trucs et astuces
|

|