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; } }
Partager