[AJAX] - Interrogez votre serveur avec JavaScript

Avatar de l’utilisateur
LM2I_Laurent
Administrateur - Site Admin
Messages : 247
Inscription : jeu. 27 août 2009 17:00

[AJAX] - Interrogez votre serveur avec JavaScript

Messagepar LM2I_Laurent » lun. 17 sept. 2012 20:20

Source:
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/script ... s/ajax.php

On commence par le script PHP

Voici le code de la page "verifpseudo.php" :

Code : Tout sélectionner

<?
//
// 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/script ... pseudo.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> :

Code : Tout sélectionner

<!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.

Agrémenter 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" :

Code : Tout sélectionner

<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" :

Code : Tout sélectionner

<!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>


@+
Laurent
Image
Webmaster
http://www.lm2i.fr
http://www.lm2i.eu

Image Image Image Image
.

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité