Probleme formulaire ajax

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

7 réponses

  1. up!!!!!ya personne pour m'aider!!
    0
    1. 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.
      0
      1. 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.
        0
        1. Ajoute aussi un "return" avant "verif()" (quand tu appelles cette fonction, dans onsubmit je suppose).
          0
          1. 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???
            0
            1. Quel est ton code actuel ?
              Utilise la balise "code" sur CCM, ou un pastebin (gist.github.com, paste.pocoo.org, ...).
              0
              1. 
                 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/>
                ...
                
                
                0