L'éditeur JavaScript
Visiteur non-identifié | Identifiez-vous | Devenir membre
Code perdu ? | Combien de visiteurs sur votre site ?
Rechercher :
Page d'accueil
     Home Page

JavaScript
     Tous les scripts
     Proposer un script
     Recherche de script
     AJAX
     Cours de JavaScript
     Liste de discussion
     Forums

Services :
     CountUs
     myCircle
     ClickInText
     XooIt

Trucs et astuces :
     HTML / CSS
     PHP / MySQL
     Réferencement
     Graph / Présentation
     Toutes les astuces
     Ajouter un article

MailingList :
113627 abonnés

Annuaire webmaster :      Hebergement web
     Referencement
     Sites webmasters
     XHTML - CSS2
     PHP
     Affiliation - Pub
     FAI

     Annuaire webmaster

Ressources pour webmasters :
     Kit graphique
     Foire aux questions
     Les membres
     Devenir annonceur
     Faire un lien
     Contact

Partenaire :
     Compteur live
     Créer un forum
     Le PHP facile
     Comscripts
     Liens sponsorisés
     Page Rank
     Gifs animés, f...
     Le village de ...
     Easy-script.com
     Poésie et cita...
     Les kits graph...
     La cuisine de ...
     Azote.org - no...
     Web creation ...
     Créer son site...
     Electroniq...
     Les autres
     Votre site ici ?


Article posté par : krucial
Date de mise en ligne : 26-09-2005
Niveau : Confirmé
>> Ajouter un article

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 :

Page 1 sur 4 - Changer de page : 1 | 2 | 3 | 4
De nikos33185 - le 10-12-2009

bonjour

Je trouve que c'est un trés bon script mais le soucis c'est que sous IE il ne fonctionne pas ou a du mal à se lancer, ya t'il un astuce
merci
De rozalina - le 10-07-2009

salut

je resolu le probleme de affichage des caractere a partir de requete avec AJAX
just on fait un encodage avec la fonction php iconv

iconv("windows-1256","UTF-8","$valbase");


De rozalina - le 09-07-2009

salut
merci pour ce script qui est parfait
mais ce script marche pour mozilla et ne marche pas avec IE.


le problème quant j'envoie la requête de sélection avec l'ajax il ne comprend pas le langage arabe il affiche "????"

j'essais de modifier l'encodage avec la tage meta
Code :
Code:
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1256">


ça marche pour le java script mais avec l'ajax ne marche pas.

donc j'essais avec l'encoudage de coté serveur c a d avec php
Code :
echo iconv("ISO-8859-1","UTF-8","$row[5]")


la résultat que l'encodage est modifié avec sucé mais il affiche des caractères comme ça " ãÍãÏ Èä ãÍãÏ"
quand j'essaie de modifier l'encodage de "UTF-8 " à "window-1256" avec la fonction header
Code :
header("Content-Type: text/html; charset=windows-1256")

de cote serveur il affiche des caractères arabe mais ne sont pas juste &#1571;£&&#1571;;&#1670;&#1571;£&#1571;&#1672;
&#1571;ˆ&#1571;¤
&#1571;£&#1571;&#1670;&#1571;£&#1571;&#1672;

si quelqu'un a une idée aide moi s'il vous plait
merci

De riderfun - le 15-09-2008

Bonjour, ce code ne fonctionne pas chez moi pourriez vous m'aider svp??
lorsque je le test en local j'ai au moment de la réponse pour 'libre ou non': "1)
echo "1";
else
echo "2";"

Merci d'avance
De pollux1er - le 01-05-2008

Merci pour l'exemple.
De blade_8 - le 29-12-2007

Bonjour, je trouve ce code très intéréssant mais j'ai un petit souci, le code fonctionne très bien je n'ai aucune erreur mysql ou autre mais par contre quand je tape un pseudo j'ai juste "ce pseudo est trop court" et après plus rien de s'affiche! Je me demandais si le problème ne venait pas du fait que dans ma table mysql "membres" le pseudo s'appel "TB_Nom_Utilisateur" faut-il que je le change en "pseudo" pour qu'il fonctionne? merci de votre aide!
De sacha - le 17-12-2007

------
Ligne 574
Car. 6

Permission denied
------



De strex - le 10-11-2007

est ce que ce code ca marche chez free.fr car il me donne un errure :
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /mnt/167/sdb/8/9/raylive1/verifusers.php on line 12
2
De jmb - le 25-10-2007

Ce n'est pas idiot puisque le but c'est d'illustrer le fonctionnement d'Ajax et non de montrer un site en exploitation. Et puis, si c'était si idiot, Google ne s'en inspirerait sûrement pas (Google Suggest) ;-)
De oualala - le 21-10-2007

Je trouve ça génial!J'ai déjà mis ce système sur plusieurs de mes pages, c'est très util!

Maitenant j'ai une question.J'ai un jeu en ligne de gestion, je fais un calcul php avant, j'arrive à un nombre, mais après si le nombre est 2, comment savoir si le joueur fais un nombre plus haut que 2?Merci d'avance pour vos réponses ;)
De ess-kamal - le 12-10-2007

salut merci bcp pour ce code mais j'avais un problem. normalement si il existe deja le pseudo ou le pseudo est libre il doit afficher une phrase cependant il affiche seulement 1 ou de 2 aprs les teste je vois que l'instruction if(texte == 1 ou 2)ca marche pas donc il execute tjr l'instruction echo (texte) !!!!??????? ca me nerve merci de me repondre le plutot possible
De helene1 - le 03-10-2007

Peux t-on utiliset l'AJAX tout en respectant les normes d'accessibilité Braillenet ?
De phcorp - le 27-07-2007

clair, net et précis, une perle ! ;)
De Sawyer4 - le 15-07-2007

Slt.

Bon ba j ai essayer ce code il marche nikel, par contre j ai mis en onBlur pour éviter les problèmes coté client par rapport au serveur.

Donc j aimerais savoir comment empêcher l envoie du formulaire si le retour de la fonction est false ou 0!

J ai essayé
<form [...] onSubmit="return LAFONCTION">

Mais ca n a pas l air de marcher !! le formulaire envoie.

Je vous remercie de vos reponses ^^
De scientifix94 - le 03-06-2007

Ce serait intéressant avoir plus de script ajax sur le site!
De CodeKiller - le 01-06-2007

Si ça peut te rassurer (?), ça ramme aussi avec IE7 sous XP, normal puisqu'il faut attendre le retour de la requête en "direct".
mais si tu utilises ta technique l'ajax ne sert plus à rien ça reste du PHP/SQL normal.
Le but d'Ajax est de faire de l'interactif et non pas du statique comme php qui est obligé de recharger la page ce qui équivaut à la "lenteur" de l'ajax finalement.

Mais sinon, c'est vrai qu'on peut aussi utiliser autre chose que onkeyup, exemple utiliser un bouton "test" qui active la fonction JScript comme ça ça ne recharge pas la page et ça ne fait pas de requete "inutiles". Mais, dans ce cas là on ne peut pas savoir directement si le pseudo est libre, exemple, tu tapes "toto", si c'est pris tu rajoutes un "1", c'est pris, tu rajoutes un "2" ainsi de suite, histoire de pas prendre un pseudo du genre "tototititata12345" pour etre sûr que c'est libre... :-)
De mario56 - le 27-05-2007

Pour ceux qui veulent apprenre l'AJAX en quelques minutes :
http://www.siteduzero.com/tuto-3-7876-1-application-ajax-facile-avec-php-et-xajax.html
De Freeza - le 24-04-2007

en fait j ai volu incorporer ce bout de code dans un formulaire mais lorsque j ai fait ca et j ai change l url par celui en local mais ca presente un probleme.lerreur générée apre l entree de plus qu un seul caractere c a d lors de l acces a la base de donnes. l erreur generee est parse error, unexpected T_STRING au niveau de la ligne 6 de la page php verifpseudo.php. y a t il quelqu un qui a une idee comment ca marche. et merci d avance


De ncode - le 10-04-2007

Comment est ce que feriez pour mettre la vérifiaction svp ?

Ncode
De raph@debian - le 27-03-2007

Merci pour ce tutoriel qui m'a beaucoup servi durant ma première journée d'AJAX !!

Avec une optimisation d'XML, pour ne plus être en "ajaT", mon code ajax marche parfaitement ;-)

@+

Page 1 sur 4 - Changer de page : 1 | 2 | 3 | 4
>> Poster une annotation sur cette astuce

Retour à la liste des trucs et astuces





compteur gratuit
actuellement en ligne

    PUBLICITE



     ANNUAIRE WEBMAST.
MagikBiz
Integrez une section logo/sonnerie sur votre site !
http://magikbiz.com
Cat : Affiliation - publicité
Voir l'annuaire webmaster


     LES SCRIPTS :
78 à éditer
68 à copier/coller
247 des membres
2580 sur le web
>> Tous les scripts

     LES MEMBRES :
61262 membres
7204 comptes CountUs
1719 comptes myCircle

     LES FORUMS :
14 forums
39936 topics
190879 messages
>> Les forums

    SONDAGE

Vous avez un blog ou site classique ?
Un blog
Un site classique
Les deux !
La mini-astuce "Graphisme / Présentation" du jour par feidakin
Vous désirez centrer votre animation Flash, malheusement cela modifie souvent l'aspect de la page . il suffit de mettres les balises <center></center> entre les paramètres de l'animation, et le tour est joué.
Proposer votre mini-astuce | Archives des mini-astuces
© 1999-2010 EJS - Tous droits réservés | CNIL N° 844440 | 13/03/2010 05:05:06 | Design by | Gen. en 0.667 sec.