J'ai un soucis avec un code concernant une requête xmlHttpRequest. Le but du code est de voir si un pseudo est disponible ds une bd mysql. J'ai vu pas mal de post concernant ce problème mais aucun ne me permet de résoudre ce problème.
La structure de mes fichiers, il y en a 3, Inscription.php (formulaire en php avec une référence vers le fichier .js dans lequel, il y a les fonctions de vérif).
VerifFonction.js avec les fonctions et le verifLogin.php avec la requête vers la bd.
pour le code du fichier javascript verifFonction :
function verifierLogin(callback){
objetXHR2 = creationXHR();
var lgg = encodeURIComponent(document.getElementById("log").value);
objetXHR2.open("get","verifLogin.php?log="+log,true);
objetXHR2.send(null);
alert(lgg);
alert(log);
objetXHR2.onreadystatechange=function(){
if (objetXHR2.readyState == 4){
if (objetXHR2.status == 200){
var nouveauResultat = callback(objetXHR2.responseText);
alert(nouveauResultat);
//document.getElementById("button").disabled= true;
}
}
}
}
Le premier aler(lgg) fonctionne, il renvoie ce que j'ai mis dans le formulaire, le deuxième non, j'ai "ObjectHtmlInputElement" et le objetXHR2.readystate ne passe pas ou trop lentement jusqu'au 4. Si on l'affiche il ira jusqu'à 4 mais de sorte que j'ai un msg d'erreur qui dit que les 30 secondes d'attente son écoulées. J'arrive donc pas à avoir le contenu de nouveauRésultat.
pour le code du fichier Inscription.php :
<script type="text/javascript" src="fonctionVerif.js" ></script>
<script type="text/javascript" src="fonctionsAjax.js" ></script>
<p> Inscription </p>
<p> Tous les champs sont obligatoires </p>
<FORM method="POST" id="form1" action="Inscription.php" onsubmit="verifForm(this)" >
<p> Nom : <INPUT name="nom" onBlur="verifNom(this);"> </INPUT>
<p> Prenom : <INPUT name ="prenom" onBlur ="verifNom(this);" > </INPUT>
<p> Rue : <INPUT name = "rue" onBlur="verifNom(this);" > </INPUT>
<p> Numero : <INPUT type=number name ="num" onBlur="verifNum(this);" > </INPUT>
<p> Code Postal : <INPUT type=number name ="cp" onBlur="verifNum(this)"> </INPUT>
<p> Localite : <INPUT name ="loc" onBlur="verifNom(this)"> </INPUT>
<p> pays : <INPUT name ="pays" onBlur="verifNom(this)"> </INPUT>
<p> Login : <INPUT id ="log" onBlur="verifierLogin();"> </INPUT>
<p> Mot de passe : <INPUT type=password name = "mp" onBlur="verifVid(this)"> </INPUT>
<p> Confirmation du mot de passe : <INPUT type=password name = "mp2" onBlur="verifMp(form1)"> </INPUT>
<p> </p>
<input name="button" id="button" type="button" onClick="afaire();" value="INSCRIPTION" />
</FORM>
La reqûete sql fonctionne parfaitement (select * from visiteur) et dans ce bout de code je récupère la première ligne. Je pensais faire un boucle for pour avoir toutes les lignes.
Voilà, je commence à stresser pcq je dois avoir fini dans 15 jours, et ça fait +- 3 jours que je trime sur ces échanges entre client et serveur...
Si une âme véritablement charitable voyait ce que je pourrais faire pour obtenir le résultat de la requête sql et le comparer à ce qui est tapé ds le formulaire, je lui en serais très reconnaissant.
Merci mais j'ai trouvé la solution, je ne comprenais pas comment utiliser les paramètres du send(). A partir de là, il suffisait de suivre la variable et la traiter mais sans ça, c'était difficile :-). Pour ceux qui auraient le même problème :
Le get du send est la méthode avec laquelle l'adresse URL récupère les variables passées en paramètre :-). Une fois pigé ça et le reste, c'est un jeu d'enfant :-)
18 août 2013 à 07:18
Merci mais j'ai trouvé la solution, je ne comprenais pas comment utiliser les paramètres du send(). A partir de là, il suffisait de suivre la variable et la traiter mais sans ça, c'était difficile :-). Pour ceux qui auraient le même problème :
Le get du send est la méthode avec laquelle l'adresse URL récupère les variables passées en paramètre :-). Une fois pigé ça et le reste, c'est un jeu d'enfant :-)
Merci kazma en tout cas