Bonjour,

J'utilise Ajax vérifier si les valeurs saisies dans mon formulaire sont correctes par rapport à ce qu'il y a dans ma base de données .

Je dois ainsi retourner un false pour ne pas envoyer le formulaire si les données ne sont pas correctes et true pour envoyer le formulaire.

Cependant, j'ai mon formulaire qui est toujours envoyé je ne sais pas pourquoi

je pense que c'est du au fait que est la partie return est executée avant que l'appel ajax est retourné la moindre information, et donc ma variable pourcentBon est tel qu'elle est initialisée au début du code mais je ne sais pas comment le résoudre.

Voici le code :


html


Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
<form action="action.php.php" method="post" onsubmit="return testFormulaire()" >
    <input type="hidden" id="laDate"   name="laDate" value="<?php echo $date; ?>" />
    <input type="text"   id="pourcent" name="pourcent" />
 
    <input name="valider" type="submit" value="valider" />
</form>


javascript
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function testFormulaire()
{
    var anneeEntier=+document.getElementById('laDate').innerHTML;
    var xhr3 = getXhr();
    //RECEPTION DES DONNEES
    var  pourcentBon=0; //permet  de tester la le pourcentage est bon ou pas
    xhr3.onreadystatechange = function(){
    // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    if(xhr3.readyState == 4 && xhr3.status == 200){
        leNouveauTab = xhr3.responseText;
        alert(leNouveauTab);
        var mytab=JSON.parse(leNouveauTab);
        var valeur=+document.getElementById('pourcentage').value;
        if((mytab[0]+ valeur)>100)
        {
            pourcentBon=1; //indique que la valeur n'est pas bonne donc non envoi du formulaire
        }
    }
}
//ENVOI DES DONNEES AU SERVEUR
xhr3.open("POST","traietement.php",true);
xhr3.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr3.send("anneeEntier="+anneeEntier);  
//retourner true ou false 
if(pourcentBon==1)
{
    alert('le totale doit etre inferieur à 100');
    return false;
}
else
{
    alert(pourcentBon); 
    alert('le total est bon !');
    return true;
}
}