Soumission de formulaire + AJAX

Résolu/Fermé
Sombresonge Messages postés 106 Date d'inscription mardi 7 février 2012 Statut Membre Dernière intervention 19 avril 2015 - Modifié par Sombresonge le 7/02/2012 à 16:31
Sombresonge Messages postés 106 Date d'inscription mardi 7 février 2012 Statut Membre Dernière intervention 19 avril 2015 - 7 févr. 2012 à 16:41
Bonjour,

Je développe actuellement un formulaire d'inscription, avec des contrôles sur les champs en Javascript/Ajax.

Seulement, dans le cas présent j'ai un gros soucis :
- Tout fonctionne parfaitement si je fais un simplet "alert" au début de la fonction onreadystatechange (sauf que bien évidement, j'affiche 4 boites de dialogue pour l'utilisateur)
- Si je supprime l'alert("test"), le formulaire se soumet automatiquement sans tester si les champs email et pseudo existent déjà (fonction ajax).


Si vous avez des idées, je vous remercie.


CODE HTML :
<form name="createMember" id="createMember" method="post" onSubmit="return FormMemberVerif();" action="">
<label for="email">Adresse e-mail<font class="aste">*</font> :</label><input type="input" name="membre_email" id="membre_email" class="inputsize_150" value="" />
<br /><label for="password">Mot de passe<font class="aste">*</font> :</label><input type="password" name="membre_password" id="membre_password" class="inputsize_150" value="" />
<br /><label for="repeatpassword">Confirmer le mot de passe<font class="aste">*</font> :</label><input type="password" name="repeatpassword" id="repeatpassword" class="inputsize_150" value="" />
<br /><label for="pseudo">Pseudo<font class="aste">*</font> :</label><input type="input" name="membre_pseudo" id="membre_pseudo" class="inputsize_150" value="" />
<br /><label for="newsletter">J'adhère à la newsletter :</label><input type="checkbox" name="membre_newsletter" id="membre_newsletter" value="1" style="margin-top:4px;" />
<br /><input type="submit" name="fcm_validation" value="Valider" style="padding-left:10px; padding-right:10px; margin-bottom:10px; margin-right:10px; float:right;" />
</form>


CODE JAVASCRIPT :
function FormMemberVerif() {
var email = document.getElementById("membre_email").value;
var password = document.getElementById("membre_password").value;
var repeat_password = document.getElementById("repeatpassword").value;
var pseudo = document.getElementById("membre_pseudo").value;
var retour = false;

if(email == "") {
alert("Veuillez renseigner votre email.");
return false;
}
else if(password == "") {
alert("Veuillez renseigner votre mot de passe.");
return false;
}
else if(repeat_password == "") {
alert("Veuillez r\351p\351ter votre mot de passe.");
return false;
}
else if(password != repeat_password) {
alert("Les deux mots de passe saisis ne sont pas identiques.");
return false;
}
else if(pseudo == "") {
alert("Veuillez renseigner votre pseudo.");
return false;
}
else {
// les champs sont renseignés et correct, on vérifie si le mail ou le pseudo existent déjà
var xhr;

if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}

xhr.onreadystatechange = function() {
alert("test");
if (xhr.readyState==4 && xhr.status==200) {
// traitement des données de retour
var tabres = xhr.responseText.split("+");
if(tabres[0] == 1 && tabres[1] == 1) {
alert("L'adresse email et le pseudo existent d\351j\340");
//retour = false;
}
else if(tabres[0] == 1 && tabres[1] == 0) {
alert("Cette adresse email existe d\351j\340");
//return false;
}
else if(tabres[0] == 0 && tabres[1] == 1) {
alert("Ce pseudo existe d\351j\340");
//return false;
}
else {
// pseudo et email inexistants, on peut enregistrer le nouveau compte
retour = true;
}
}
};
//on appelle le fichier createmember.php
xhr.open("GET", "createmember.php?email="+email+"&pseudo="+pseudo, true);
xhr.send(null);
}
return retour;
}

1 réponse

Sombresonge Messages postés 106 Date d'inscription mardi 7 février 2012 Statut Membre Dernière intervention 19 avril 2015 9
7 févr. 2012 à 16:41
Pour ceux que ca pourrait aider, la réponse était en fait toute bête, il suffisait de basculer la fonction open en mode synchrone : xhr.open("GET", "createmember.php?email="+email+"&pseudo="+pseudo, false);
1