Probleme formulaire ajax
rollings4
Messages postés
19
Statut
Membre
-
rollings4 Messages postés 19 Statut Membre -
rollings4 Messages postés 19 Statut Membre -
Bonjour, jai un probleme avec mon code ajax , j'essaie de vérifier des données envoyées par un formulaire dans la base de données , bon tout marche bien ,je récupère bien la réponse envoyée par le fichier php , je reussi à la tester et a envoyer le message d'erreur si l'email existe déja ,mais je n'arrive pas a arreter l'exécution s'il ya erreur dans l'email , c'est à dire qu'on affiche l'erreur mais le formulaire va toujours .
function request(callback) {
var email = document.getElementById("email").value;
var xhr = getXMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
callback(xhr.responseText);
document.getElementById("loader").style.display = "none";
} else if (xhr.readyState < 4) {
document.getElementById("loader").style.display = "inline";
}
};
xhr.open("GET", "XMLHttpRequest_getSleep.php?email=" + email, true);
xhr.send(null);
}
function readData(sData) { //fonction qui récupère valeur retournée par php
, vaut 1 si l'email n'a pas encore été utilisée et 0 si
elle a été utilisée
var div = sData;
if(div==1)
{
document.form_inscript.submit();
}
if(div==0)
{
writediv("Cette adresse email a deja été utilisée");
return false;
}
}
function verif() //la fonction qui est appellée au submit du formulaire
{
picdiv('<img src="images/charg.gif"/">');
nom = document.getElementById('nom').value ;
prenom = document.getElementById('prenom').value ;
email = document.getElementById('email').value ;
pass = document.getElementById('pass').value ;
sexe = document.getElementById('sex').value;
if(nom.length == 0 || prenom.length == 0 || email.length == 0 || pass.length == 0 || sexe == 0)
{
setTimeout("writediv( 'Veuillez remplir tous les champs</span>')" , 1000);
setTimeout(" picdivno('')" , 1000);
return false;
}
else if(nom.length < 2 || prenom.length < 2 || email.length < 4 || pass.length < 6)
{
setTimeout("writediv(' Veuillez respecter les tailles prescrites')" ,1000);
setTimeout(" picdivno('')" , 1000);
return false;
}
else
{
request(readData); //ici on appelle la fonction qui
envoi les données au fichier php
setTimeout(" picdivno('')" , 2000);
}
}
je veux que mon formulaire soit envoyé selon l'erreur ou pas.merci
function request(callback) {
var email = document.getElementById("email").value;
var xhr = getXMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
callback(xhr.responseText);
document.getElementById("loader").style.display = "none";
} else if (xhr.readyState < 4) {
document.getElementById("loader").style.display = "inline";
}
};
xhr.open("GET", "XMLHttpRequest_getSleep.php?email=" + email, true);
xhr.send(null);
}
function readData(sData) { //fonction qui récupère valeur retournée par php
, vaut 1 si l'email n'a pas encore été utilisée et 0 si
elle a été utilisée
var div = sData;
if(div==1)
{
document.form_inscript.submit();
}
if(div==0)
{
writediv("Cette adresse email a deja été utilisée");
return false;
}
}
function verif() //la fonction qui est appellée au submit du formulaire
{
picdiv('<img src="images/charg.gif"/">');
nom = document.getElementById('nom').value ;
prenom = document.getElementById('prenom').value ;
email = document.getElementById('email').value ;
pass = document.getElementById('pass').value ;
sexe = document.getElementById('sex').value;
if(nom.length == 0 || prenom.length == 0 || email.length == 0 || pass.length == 0 || sexe == 0)
{
setTimeout("writediv( 'Veuillez remplir tous les champs</span>')" , 1000);
setTimeout(" picdivno('')" , 1000);
return false;
}
else if(nom.length < 2 || prenom.length < 2 || email.length < 4 || pass.length < 6)
{
setTimeout("writediv(' Veuillez respecter les tailles prescrites')" ,1000);
setTimeout(" picdivno('')" , 1000);
return false;
}
else
{
request(readData); //ici on appelle la fonction qui
envoi les données au fichier php
setTimeout(" picdivno('')" , 2000);
}
}
je veux que mon formulaire soit envoyé selon l'erreur ou pas.merci
7 réponses
-
-
Il faut utiliser « return false ».
Dans verif(), quand tu appelles la fonction request() :return request(...);
Dans la fonction request(), lorsque tu appelles le callback (readData) :return callback(...);
Dans readData(), utilise "return false;" lorsqu'il faut bloquer le formulaire. -
merci pour ta réponse;
j'ai mis les return mais le formulaire est quand même envoyé quand il y a erreur .
,lorsque je mets return false dans verif() le formulaire n'est pas envoyé quelque soit la réponse , et quand je l'enlève il est toujours envoyé , et quand je mets
return request(readData); c'est quand meme envoyé .pour info le ficher php retourne comme réponse 0 ou 1.
please help me. -
Ajoute aussi un "return" avant "verif()" (quand tu appelles cette fonction, dans onsubmit je suppose).
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
oui j'ai déja mis un return là ba mais ça fonctionne pas, lorsque je met return xhr.responsetext , ça envoie le formulaire car xhr.responsetext est vide , est ce qu 'il n ya pas une méthode directe pour récupérer la réponse dans le fichier php???
-
Quel est ton code actuel ?
Utilise la balise "code" sur CCM, ou un pastebin (gist.github.com, paste.pocoo.org, ...). -
function request(callback) { var email = document.getElementById("email").value; var xhr = getXMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) { return callback(xhr.responseText); document.getElementById("loader").style.display = "none"; } else if (xhr.readyState < 4) { document.getElementById("loader").style.display = "inline"; } }; xhr.open("GET", "XMLHttpRequest_getSleep.php?email=" + email, true); xhr.send(null); } function readData(sData) { var div = sData; if(div==1) { return true; } if(div==0) { writediv("Cette adresse email a deja été utilisée"); return false; } } function verif() { picdiv('<img src="images/charg.gif"/">'); nom = document.getElementById('nom').value ; prenom = document.getElementById('prenom').value ; email = document.getElementById('email').value ; pass = document.getElementById('pass').value ; sexe = document.getElementById('sex').value; if(nom.length == 0 || prenom.length == 0 || email.length == 0 || pass.length == 0 || sexe == 0) { setTimeout("writediv( 'Veuillez remplir tous les champs</span>')" , 1000); setTimeout(" picdivno('')" , 1000); return false; } else if(nom.length < 2 || prenom.length < 2 || email.length < 4 || pass.length < 6) { setTimeout("writediv(' Veuillez respecter les tailles prescrites')" ,1000); setTimeout(" picdivno('')" , 1000); return false; } else { setTimeout(" picdivno('')" , 2000); return request(readData); } } // et voici le ficher php <?php include("database.php"); header("Content-Type: text/plain"); $email = (isset($_GET["email"])) ? $_GET["email"] : NULL; $req=mysql_query("SELECT * FROM user WHERE email ='".$email."'"); $res=mysql_num_rows($req); if ($res == 0) { sleep(2); echo 1; } else { sleep(2); echo 0; } ?> // ainsi que le formulaire <form method="post" action="index.php" id="form_inscript" name ="form_inscript" onsubmit="return verif(this)" > <div class="div_label_inscript"><label class="label_inscript" for=""> Nom</label></div> : <input id="nom" name ="nom" onkeyUp="verif2(this.value)" onblur="onput(this.value)" class="input_inscript" size="22" type="text" name="nom" /><br/> <div class="div_label_inscript"><label class="label_inscript" for=""> Prénoms</label></div> : <input id="prenom" name="prenom" class="input_inscript" size="22" type="text" onkeyUp="verif2(this.value)" onblur="onput(this.value)" name="prenom" /><br/> ...