PHP/AJAX en mode POST

Résolu
nabmoah - 18 juin 2018 à 17:01
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 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 :)

4 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
18 juin 2018 à 17:16
Bonjour,

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

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


1
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
18 juin 2018 à 17:17
0
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 :)
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
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.
0
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 :)
0
@karamel Messages postés 1855 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 18 avril 2024 153
Modifié le 18 juin 2018 à 21:38
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);
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
18 juin 2018 à 23:37
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;

0
Wooaa merci bcp Jordane45 :D

Mise à part une toute petite erreur sur la ligne 15 de la page "verifpseudo.php" le code est beaucoup plus propre et bcp plus clair :)

Seul problème c'est que ... ça marche à moitié hhh
En effet, le script marche et me dis que le pseudo est trop court quant je tape les 3 premières lettres, mais dès que je tape la 4ème lettre ben il n'y a aucun message qui apparaît, la blanc total. en dessous de 3 lettres (condition JS) ça marche, mais au delà des 3 lettres, le message rouge disparaît et aucun message n'est affiché.

J'ai vérifié côté "verifpseudo.php" et ça marche très bien aucune erreur à signaler.

Serais-ce un problème de navigateur ? j'ai la dernière version de chrome et firefox tous les deux mis à jour récemment.

Merci beaucoup Jordan45 pour vos réponses, ça m'aide énormément :)

Si votre code marche très bien de votre côté, ce n'est pas la peine de vous déranger encore plus, je verrai quel est le soucis de mon côté, faut bien que j'apprenne tout seul comme un grand aussi ;)
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
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;
0
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 :)
0
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 :(
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
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('');
      }
    }
  }
 }

0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
Modifié le 19 juin 2018 à 13:44
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);
}


0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
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....
0
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 ;-)
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
19 juin 2018 à 15:04
pense à mettre le sujet en résolu (petite roue crantée à côté du titre de ta question )
0
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 :)
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
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
0
Rejoignez-nous