PHP/AJAX en mode POST [Résolu]

nabmoah - 18 juin 2018 à 17:01 - Dernière réponse : jordane45 22580 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 26 septembre 2018 Dernière intervention
- 19 juin 2018 à 17:31
Bonjour,

J'ai repris un code en Ajax/php pour vérifier la disponibilité du pseudo saisie par l'utilisateur en temps réel.

D'après ce que j'ai pu apprendre, c'est une solution qui me permet de faire ceci en mode "GET" comme vous pouvez le constater sur le code ci-dessous.
Je souhaite emettre ces requêtes en mode POST, donc j'ai changé le paramètre de xhr_object.open("GET", fichier, false); en xhr_object.open("POST", fichier, false);
Malheureusement ça ne marche pas.

pourriez vous m'aider, s'il vous plait, à modifier la méthode de soumission du formulaire Ajax en POST ?

Page ajax.php :

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title>AJAX</title>

<script type="text/javascript">
function writediv(textepseudo)
     {
     document.getElementById('pseudobox').innerHTML = textepseudo;
     }

function verifPseudo(pseudo)
{
     if(pseudo != '')
               {
               if(pseudo.length<4)
                         writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est trop court</span>');
               else if(pseudo.length>16)
                         writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est trop long</span>');
               else if(textepseudo = file('./verifpseudo.php?pseudo='+escape(pseudo)))
                         {
          if(textepseudo == 1)
               writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est deja pris</span>');
          else if(textepseudo == 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>

</head>
<body>

<form action="">
<input type="text" name="pseudo" onKeyUp="verifPseudo(this.value)" />
<div id="pseudobox"></div>
</form>

</body>
</html>


Page verifpseudo.php :

<?php
//
// VERIFICATION EN LIVE DU PSEUDO
//

// CONNECION SQL
mysql_pconnect("127.0.0.1", "root", "");
mysql_select_db("bdd");

// VERIFICATION
$result = mysql_query("SELECT * FROM users WHERE pseudo='$_GET[pseudo]'");
$nbre_res=mysql_num_rows($result);
if(nbre_res >=1) {
	echo "1";
	//exit;
}
else {
	echo "2";
	//exit;
}

?>



Merci d'avance :)
Afficher la suite 

Votre réponse

19 réponses

Meilleure réponse
jordane45 22580 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 26 septembre 2018 Dernière intervention - 18 juin 2018 à 17:16
1
Merci
Bonjour,

Sans aller très loin
"SELECT * FROM users WHERE pseudo='$_GET[pseudo]'"

.... $_POST serait mieux dans ce cas non ? :-)


Merci jordane45 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

jordane45 22580 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 26 septembre 2018 Dernière intervention - 18 juin 2018 à 17:17
Salut
Merci Jordan45 pour ta réponse
effectivement j'ai remplacé par "$_POST["pseudo"]" mais ça n'a rien donné !

pour ce qui est de la version de PHP, je suis au courant mais je préfère travailler avec la version 5.x pour des raison technique au niveau de notre réseau :)
jordane45 22580 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 26 septembre 2018 Dernière intervention - 18 juin 2018 à 17:30
As tu des erreurs dans la console de ton navigateur ?
(pense à activer l'affichage de l'ajax )
et perso... je te conseille de debuguer via FireFox ( c'est plus simple pour debuguer l'ajax).
Ensuite, concernant la parti de ton code PHP ... peux tu activer l'affichage des erreurs PHP et ajouter, à tes instructions mysql, des OR DIE pour s'assure qu'il n'y ait aucun souci de ce côté là.

Reposte nous ton code modifier que l'on regarde ce qu'il en est.
Rebonjour,

Rien a faire :(
j'ai changé le paramètre "GET" en "POST" sur :

Page ajax.php :
- xhr_object.open("POST", fichier, false);

Page verifpseudo.php :
- $pseudo=$_POST["pseudo"];

J'ai testé la page verifpseudo indépendamment sans le formulaire et ça amrche, ça m'affiche les bons résultats, mais si je passe par le formulaire ajax ça me dit que le pseudo saisir est libre malgré qu'il existe dans ma base de donnée (table users) :(

Je vous retransmet le code dans l'espoir d'avoir une correction à ce dernier parce-que je sens que c'est une erreur de procédé et non de syntaxe.

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<4)
                         writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est trop court</span>');
               else if(pseudo.length>16)
                         writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est trop long</span>');
               else if(texte = file('./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("POST", 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>


Page verifpseudo.php

<?php
//
// VERIFICATION EN LIVE DU PSEUDO
//

// CONNECION SQL
mysql_pconnect("127.0.0.1", "root", "");
mysql_select_db("ubo_adh");

$pseudo=$_POST["pseudo"];

// VERIFICATION
$result = mysql_query("SELECT usr FROM users2 WHERE pseudo='$pseudo'");
$nbre_res=mysql_num_rows($result);
if($nbre_res >=1) {
	echo "1";
}
else {
	echo "2";
}
?>



Merci encore pour votre aide :)
@karamel 1661 Messages postés vendredi 9 mai 2008Date d'inscriptionModérateurStatut 23 août 2018 Dernière intervention - 18 juin 2018 à 21:34
bonjour

comme il s'agit de donné formaté en donné de formulaire envoyé avec post il ne faut pas oublier de modifier l'entete d'envoi
 xhr_object.open("POST", fichier, false);    
xhr_object.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
xhr_object.send(null);
Commenter la réponse de jordane45
jordane45 22580 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 26 septembre 2018 Dernière intervention - 18 juin 2018 à 23:37
0
Merci
Ton code légèrement remis au propre
<html>
  <head>
  <title> TEST</title>
  </head>
  <body>

    <form action="">
    <input type="text" name="pseudo" onKeyUp="verifPseudo(this.value)" />
    <div id="pseudobox"></div>
    </form>


    <script type="text/javascript">
      function writediv(texte) {
        document.getElementById('pseudobox').innerHTML = texte;
      }

      function verifPseudo(pseudo){
        if(typeof(pseudo)!='undefined' && pseudo!=null && pseudo != '') {
          var pseudoLen = pseudo.length;
          console.log('pseudoLen : ' + pseudoLen);
          if(pseudoLen < 4){
             writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est trop court</span>');
          } else if(pseudoLen > 16){
             writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est trop long</span>');
          } else if(texte = file('./verifpseudo.php',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('');
            }
          }else{
            writediv('');
          }
        }

       }

       function file(url,pseudo) {
          
          var data ='pseudo='+escape(pseudo);
          var result = postAjax(url,data);
          return result;
       }
       
      /**
      * Retourne l'objet xhr
      */     
      function getXhr(){
        var xhr = null;
          try{
            if( typeof ActiveXObject == 'function' ){
                xhr = new ActiveXObject("Microsoft.XMLHTTP");
            } else {
              if( window.XMLHttpRequest ){
                xhr = new XMLHttpRequest();
              }
            }
          } catch(e) {
            alert(e.message);
            return null;
          }
        return xhr;
      }

      /**
      * Ajax : POST
      */
      function postAjax(url,data){
        var xhr = getXhr();
        xhr.open('POST', url, true);
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        xhr.onreadystatechange = function() {
          if(this.readyState == 4){
            console.log('status', xhr.status);
            console.log('DONE', xhr);
            if(xhr.status == 200){
              console.log('responseText',xhr.responseText);
              return xhr.responseText;
            }else{
              //error
              alert('Erreur !' + xhr.status + " -> " + xhr.responseText); 
            }
          }
        };
        xhr.send(data);
      }  
    </script>

  </body>
</html>


Et pour tester :
<?php
//affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

//récupération PROPRE des variables AVANT de les utiliser
$pseudo = !empty($_POST['pseudo']) ? $_POST['pseudo'] : NULL;

//connexion à la bdd:
mysql_pconnect("127.0.0.1", "root", "") or die("Impossible de se connecter : " . mysql_error());
mysql_select_db("ubo_adh");

// VERIFICATION
$sql = "SELECT usr FROM users2 WHERE pseudo='$pseudo';" :
$result = mysql_query($sql) or die( mysql_error() );
$nbre_res=mysql_num_rows($result);

//ecriture ternaire (sorte de if.. )
$result = $nbre_res >=1 ? 1 : 2;

echo $result;

jordane45 22580 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 26 septembre 2018 Dernière intervention - 19 juin 2018 à 10:20
Regarde dans la console de ton navigateur.
Comme j'ai mis des console.log ... tu devrais avoir un peu plus d'infos.
NB: Pour déboguer de l'ajax, utilise de préférence FireFox. La console est plus simple à utiliser.
Par contre, mon code je l'ai testé sans connexion à la bdd.
Juste un if dans le code à l'arrache pour tester.
if($pseudo == 'jordane' ){
  $result = 1;
}else{
 $result = 2;
}



Ce qui me fait penser à une petite modification dans ton code à faire je pense
$query = mysql_query($sql) or die( mysql_error() );
$nbre_res=mysql_num_rows($query);

//ecriture ternaire (sorte de if.. )
$result = $nbre_res >=1 ? 1 : 2;

echo $result;
Rebonjour,

j'ai consulté la console de mon navigateur et voici le code qui se génère après avoir tapé la 4ème lettre :

L’encodage de caractères du document HTML n’a pas été déclaré. Le document sera affiché avec des caractères incorrects pour certaines configurations de navigateur si le document contient des caractères en dehors de la plage US-ASCII. L’encodage de caractères de la page doit être déclaré dans le document ou dans le protocole de transfert.
ajax.php
pseudoLen : 1
ajax.php:21:11
pseudoLen : 2
ajax.php:21:11
pseudoLen : 3
ajax.php:21:11
pseudoLen : 4
ajax.php:21:11
L’utilisation d’XMLHttpRequest de façon synchrone sur le fil d’exécution principal est obsolète à cause de son impact négatif sur la navigation de l’utilisateur final. Consulter http://xhr.spec.whatwg.org/ pour plus d’informations.
ajax.php:73:8
status 200
ajax.php:77:13
DONE 
XMLHttpRequest { onreadystatechange: onreadystatechange(), readyState: 4, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload, responseURL: "http://127.0.0.1/reg/verifpseudo.php", status: 200, statusText: "OK", responseType: "", response: "2" }
ajax.php:78:13
responseText 2
ajax.php:80:15



j'ai consulté la page à laquelle fait référence pour plus d'information mais je me suis un peu perdu :(

si j'ai bien compris, la méthode qu'utilise mon code est obsolète ?

Merci d'avance pour la lumière que vous nous apporter et pour votre aide Jordan45 :)
Rebonjour,

j'ai réglé le problème des 2 erreurs de la console, et maintenant j'ai un résultat probant côté debug mais le résultat ne s'affiche toujours pas :

pseudoLen : 1
ajax.php:22:11
pseudoLen : 2
ajax.php:22:11
pseudoLen : 3
ajax.php:22:11
pseudoLen : 4
ajax.php:22:11
status 200
ajax.php:78:13
DONE 
XMLHttpRequest { onreadystatechange: onreadystatechange(), readyState: 4, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload, responseURL: "http://127.0.0.1/reg/verifpseudo.php", status: 200, statusText: "OK", responseType: "", response: "2" }
ajax.php:79:13
responseText 2


Normalement ça doit marcher vue qu'il n'y a aucune erreur à priori :(
jordane45 22580 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 26 septembre 2018 Dernière intervention - 19 juin 2018 à 11:45
Alors oui... ton code est quelque peu obsolète..... mais toujours fonctionnel.
L'ajax fonctionne puisque tu obtiens bien la réponse : "2"
responseText 2


Peux tu ajouter modifier un peu le code comme ceci et regarder à nouveau dans la console après avoir saisi au moins 4 caractères :
function verifPseudo(pseudo){
  if(typeof(pseudo)!='undefined' && pseudo!=null && pseudo != '') {
    console.log(' pseudo : ' + pseudo);
    var pseudoLen = pseudo.length;
    console.log('pseudoLen : ' + pseudoLen);
    if(pseudoLen < 4){
       writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est trop court</span>');
    } else if(pseudoLen > 16){
       writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est trop long</span>');
    } else{
      var texte = file('./verifpseudo.php',escape(pseudo));
      console.log("TEXTE = " + texte);
      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{
        console.log("Valeur de texte inconnue !");
        writediv('');
      }
    }
  }
 }

J'ai remplacé la fonction verifpseudo () comme tu me l'as indiqué, toujours le même résultat :(

 pseudo : f
ajax.php:21:4
pseudoLen : 1
ajax.php:23:4
 pseudo : fa
ajax.php:21:4
pseudoLen : 2
ajax.php:23:4
 pseudo : fal
ajax.php:21:4
pseudoLen : 3
ajax.php:23:4
 pseudo : fall
ajax.php:21:4
pseudoLen : 4
ajax.php:23:4
TEXTE = undefined
ajax.php:30:6
Valeur de texte inconnue !
ajax.php:36:5
status 200
ajax.php:79:13
DONE 
XMLHttpRequest { onreadystatechange: onreadystatechange(), readyState: 4, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload, responseURL: "http://127.0.0.1/reg/verifpseudo.php", status: 200, statusText: "OK", responseType: "", response: "2" }
ajax.php:80:13
responseText 2
ajax.php:82:15



ça se vois que ça marche mais le message ne s'affiche plus après la 4ème lettre tapée :(

je suis maudit :'(
Commenter la réponse de jordane45
jordane45 22580 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 26 septembre 2018 Dernière intervention - Modifié par jordane45 le 19/06/2018 à 13:44
0
Merci
Petite erreur de ma part
Voici la code JS corrigé
function writediv(texte) {
  document.getElementById('pseudobox').innerHTML = texte;
}

function verifPseudo(pseudo){
  if(typeof(pseudo)!='undefined' && pseudo!=null && pseudo != '') {
    var pseudoLen = pseudo.length;
    console.log('pseudoLen : ' + pseudoLen);
    if(pseudoLen < 4){
       writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est trop court</span>');
    } else if(pseudoLen > 16){
       writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est trop long</span>');
    } else{
      file('./verifpseudo.php',escape(pseudo));
    }
  }
 }

 function file(url,pseudo) {
    
    var data ='pseudo='+escape(pseudo);
    var result = postAjax(url,data,function(response){
      console.log("response" , response);
      if(response == 1){
        writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est deja pris</span>');
      } else if(response == 2){
        writediv('<span style="color:#1A7917"><b>'+pseudo+' :</b> ce pseudo est libre</span>');
      }else{
        console.log("Valeur inconnue !");
        writediv('');
      } 
      
    });
    return result;
 }
 
 
/**
* Retourne l'objet xhr
*/     
function getXhr(){
  var xhr = null;
    try{
      if( typeof ActiveXObject == 'function' ){
          xhr = new ActiveXObject("Microsoft.XMLHTTP");
      } else {
        if( window.XMLHttpRequest ){
          xhr = new XMLHttpRequest();
        }
      }
    } catch(e) {
      alert(e.message);
      return null;
    }
  return xhr;
}

/**
* Ajax : POST
*/
function postAjax(url,data,callBack){
  var xhr = getXhr();
  xhr.open('POST', url, true);
  xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  xhr.onreadystatechange = function() {
    if(this.readyState == 4){
      console.log('status', xhr.status);
      console.log('DONE', xhr);
      if(xhr.status == 200){
        console.log('responseText',xhr.responseText);
        callBack(xhr.responseText);
      }else{
        //error
        alert('Erreur !' + xhr.status + " -> " + xhr.responseText); 
      }
    }
  };
  xhr.send(data);
}


Cordialement, 
Jordane                                                                 
jordane45 22580 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 26 septembre 2018 Dernière intervention - 19 juin 2018 à 13:48
On peut aussi l'écrire comme ceci:
function verifPseudo(pseudo){
  if(typeof(pseudo)!='undefined' && pseudo!=null && pseudo != '') {
    var pseudoLen = pseudo.length;
    console.log('pseudoLen : ' + pseudoLen);
    if(pseudoLen < 4){
       writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est trop court</span>');
    } else if(pseudoLen > 16){
       writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est trop long</span>');
    } else{
      file('./verifpseudo.php',escape(pseudo),function(response){
                                              console.log("response" , response);
                                              if(response == 1){
                                                writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est deja pris</span>');
                                              } else if(response == 2){
                                                writediv('<span style="color:#1A7917"><b>'+pseudo+' :</b> ce pseudo est libre</span>');
                                              }else{
                                                console.log("Valeur inconnue !");
                                                writediv('');
                                              }     
                                             });
    }
  }
 }
 
 

 function file(url,pseudo, callBack) {
    var data ='pseudo='+escape(pseudo);
    var result = postAjax(url,data,callBack);
    return result;
 }
 


A toi de voir ce que tu préfères....
WWoooaaa ça marche :D

Merci beaucoup Jordan45 tu me sauve la vie :)

les deux scripts marches très bien. Le deuxième est beaucoup plus ergonomique je trouve :)

Encore mille merci, t'es un As ;-)
jordane45 22580 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 26 septembre 2018 Dernière intervention - 19 juin 2018 à 15:04
pense à mettre le sujet en résolu (petite roue crantée à côté du titre de ta question )
Commenter la réponse de jordane45
0
Merci
Rebonjour Jordan45 :)

Merci encore pour ton aide inestimable.

Je souhaiterai te poser une dernière question si possible :

j'ai utilisé le code corrigé pour vérifier deux (02) saisies en live (Pseudo et Email)

Je souhaiterai faire apparaitre un bouton "submit" si les deux entités sont valides et disponible, sinon le bouton "submit" reste toujours caché

J'ai essayé avec les variables "response" et "response2" comme montré ci-dessous mais ça n'a rien donné ... je pense que je me goure un peu sur l'emplacement, sinon le fondamental même de la fonction ^^

Si possible de m'orienter, ça serai sympa de ta part :)

function writediv(texte) {
  document.getElementById('pseudobox').innerHTML = texte;
}

function writedive(texte2) {
  document.getElementById('emailbox').innerHTML = texte2;
}

function writedivr(texte3) {
  document.getElementById('boutonbox').innerHTML = texte3;
}

function verifPseudo(pseudo){
  if(typeof(pseudo)!='undefined' && pseudo!=null && pseudo != '') {
    var pseudoLen = pseudo.length;
    console.log('pseudoLen : ' + pseudoLen);
    if(pseudoLen == 0){
		writediv('R');
	} else if(pseudoLen < 4){
       writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est trop court</span>');
    } else if(pseudoLen > 16){
       writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est trop long</span>');
    } else{
      file('./verifpseudo.php',escape(pseudo),function(response){
	  console.log("response" , response);
	  if(response == 1){
		writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est deja pris</span>');
	  } else if(response == 2){
		writediv('<span style="color:#1A7917"><b>'+pseudo+' :</b> ce pseudo est libre</span>');
	  }else{
		console.log("Valeur inconnue !");
		writediv('');
	  }     
	 });
    }
  } else {
	writediv('');
 }
}
 
 function verifEmail(email){
  if(typeof(email)!='undefined' && email!=null && email != '') {
    var emailLen = email.length;
    console.log('emailLen : ' + emailLen);
    if(emailLen < 4){
       writedive('<span style="color:#cc0000"><b>'+email+' :</b> ce email est trop court</span>');
    } else if(emailLen > 60){
       writedive('<span style="color:#cc0000"><b>'+email+' :</b> ce email est trop long</span>');
    } else{
      file2('./verifemail.php',escape(email),function(response2){
	  console.log("response2" , response2);
	  if(response2 == 1){
		writedive('<span style="color:#cc0000"><b>'+email+' :</b> ce email est deja pris</span>');
	  } else if(response2 == 2){
		writedive('<span style="color:#1A7917"><b>'+email+' :</b> ce email est libre</span>');
	  }else{
		console.log("Valeur inconnue !");
		writedive('');
	  }     
	 });
    }
  } else {
	writedive('');
  }
 }

 function file(url,pseudo, callBack) {
    var data ='pseudo='+escape(pseudo);
    var result = postAjax(url,data,callBack);
    return result;
 }
 
 function file2(url,email, callBack) {
    var data ='email='+escape(email);
    var result = postAjax(url,data,callBack);
    return result;
 }
 

 
/**
* Retourne l'objet xhr
*/     
function getXhr(){
  var xhr = null;
    try{
      if( typeof ActiveXObject == 'function' ){
          xhr = new ActiveXObject("Microsoft.XMLHTTP");
      } else {
        if( window.XMLHttpRequest ){
          xhr = new XMLHttpRequest();
        }
      }
    } catch(e) {
      alert(e.message);
      return null;
    }
  return xhr;
}

/**
* Ajax : POST
*/
function postAjax(url,data,callBack){
  var xhr = getXhr();
  xhr.open('POST', url, true);
  xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  xhr.onreadystatechange = function() {
    if(this.readyState == 4){
      console.log('status', xhr.status);
      console.log('DONE', xhr);
      if(xhr.status == 200){
        console.log('responseText',xhr.responseText);
        callBack(xhr.responseText);
      }else{
        //error
        alert('Erreur !' + xhr.status + " -> " + xhr.responseText); 
      }
    }
  };
  xhr.send(data);
}

if (response == 2) {
	writedivr('bouton');
} else {
	writedivr('RIEN');
}


Merci encore pour ton aide, j'apprécie énormément :)
jordane45 22580 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 26 septembre 2018 Dernière intervention - 19 juin 2018 à 17:31
Ton
if (response == 2) {
	writedivr('bouton');
} else {
	writedivr('RIEN');
}

n'a rien à faire là.
response, là où tu as mis ton code, n'existe pas......

Pour faire ce que tu souhaites :
1 - Initialiser une variable ayant une porté "globale" ( donc en dehors de toute fonction et tant qu'à faire... au début du script. )
var checkResponse1= 0; //pour le pseudo
var checkResponse2= 0; // pour le mail


2 - Créer une fonction pour verifier ces variables et faire apparaitre, si besoin le bouton
function checkCheck(){
  checkResponses = checkResponse1 + checkResponse2;
  if (checkResponses == 2) {
	writedivr('bouton');
   } else {
	writedivr('RIEN');
   }
}


3 - Dans chaque "callBack" de tes ajax, incrémenter cette variable si la valeur est ok et appeler la fonction de vérification checkCheck
par exemple le premier (pseudo)
file('./verifpseudo.php',escape(pseudo),function(response){
	  console.log("response" , response);
	  if(response == 1){
		writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est deja pris</span>');
	  } else if(response == 2){
		writediv('<span style="color:#1A7917"><b>'+pseudo+' :</b> ce pseudo est libre</span>');
                checkResponse1++; //ici j'incrémente ma variable
	  }else{
		console.log("Valeur inconnue !");
		writediv('');
	  }
       checkCheck(); //on vérifie l'état des réponses     
});

=> Faire pareil pour le pseudo avec la seconde variable


J'ai écrit le code de tête sans le tester.... ça te donne les grandes lignes à suivre
Commenter la réponse de nabmoah

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.