erreur ...
il faut passer par le onsubmit du form et pas par le onclick du bouton submit ...
erreur ...
il faut passer par le onsubmit du form et pas par le onclick du bouton submit ...
Oui pardon je voulais dire onSubmit bien sûr. Par contre dans mon script, comment appeler ma page php qui crée la requête puisque l'on peux pas le faire en javascript
Je viens d'ajouter cela à mon code mais je ne vois pas ce que je dois en faire.
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $.ajax({ url:"validDept.php", context: document.body }).done(function(){ $(this).addClass("done"); });
Peut-être que lire les tutoriels serait une bonne idée ?
Sérieusement ? Si je ne l'avais pas fait je ne serait pas là en train de demander des explications, je n'essaierai même pas de l'utiliser tout simplement.
surtout du coté de data: et de success:
J'ai regardé data: et success: mais le code que j'ai créé ne reponds rien. De plus je n'ai pas mis de succes parce que je n'en voit pas l'utilité içi après je me trompe surement.
Voilà le code que j'ai écrit :
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 if(document.formdept) { var str = document.formdept.depart.value; var strim=str.replace(/[^a-z]/gi, ''); $.ajax({ type: "POST", url: "validDept.php", data: "dept=$array", }); if(strim=="" || str!=$_POST['dept']) { alert("Veuillez saisir un nom de DEPARTEMENT"); return false; } else if (formdept.checkbtm.checked==false && formdept.checkbts.checked==false && formdept.checkbta.checked==false) { alert("Veuillez cocher une durée"); return false; } else return true; }
En gros tu poses une question au serveur mais tu te fois de la réponse ?De plus je n'ai pas mis de succes parce que je n'en voit pas l'utilité içi
c'est dans le success que tu recupèreras la réponse du serveur ... oui ou non la saisie est elle dans la bdd ???
la page de traitement devra retourner cette reponse conditionnellement à ton test
coté serveur : echo "true"; ou echo "false".
et dans le success
pour l'exemple ici un alert pour visualiser lé réponse
Code : Sélectionner tout - Visualiser dans une fenêtre à part success: function(reponse){alert(reponse);}
D'accord je comprends un peu mieu déjà.
J'ai du faire un erreur idiote je suppose mais je te montre quand même mon code javascript et php pour que tu puises me dire ou est l'erreur.
Code javascript : 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 if(document.formdept) { var str = document.formdept.depart.value; var strim=str.replace(/[^a-z]/gi, ''); $.ajax({ type: "POST", url: "validDept.php", data: "dept=$array", success: function(dept){} }); if(strim=="" || $_POST['dept']=="false") { alert("Veuillez saisir un nom de DEPARTEMENT"); return false; } else if (formdept.checkbtm.checked==false && formdept.checkbts.checked==false && formdept.checkbta.checked==false) { alert("Veuillez cocher une durée"); return false; } else return true; }
et là le php:
Code php : 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 <?php try { $bdd = new PDO('mysql:host=localhost;dbname=orange', 'root', ''); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $term=$_GET['term']; $req=$bdd->prepare('SELECT DISTINCT NomDept FROM test WHERE NomDept= :term'); $req->execute(array('term' => $term)); $donnees = $req->fetch(); if($donnees['NomDept'] != NULL) echo "true"; else echo "false"; $req->closeCursor(); ?>
tu mélanges php et js ...
php est exécuté coté serveur
et js coté client ...
dans le success tu ne peux avoir que du js !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 success: function(dept){ // ici le traitement js lors du retour de la reponse du serveur if (dept= "FALSE"){ alert('erreur !!!'); return false;} } });
Ok mon code est devenu celui-là :
Où est mon erreur ce coup-ci ?
Code javascript : 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 if(document.formdept) { var str = document.formdept.depart.value; var strim=str.replace(/[^a-z]/gi, ''); var trouve=$.ajax({ type: "POST", url: "validDept.php", data: "dept=$array", success: function(dept){ if(dept=="false") { return false; } else return true; }}); if(strim=="" || trouve=="false") { alert("Veuillez saisir un nom de DEPARTEMENT"); return false; } else if (formdept.checkbtm.checked==false && formdept.checkbts.checked==false && formdept.checkbta.checked==false) { alert("Veuillez cocher une durée"); return false; } else return true; }
là il te dit quoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 success: function(dept){ alert(dept); if(dept=="false") { return false; } else return true; }
Il m'affiche :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <br /> <font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'> <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Undefined index: term in D:\wamp\www\Stage Orange\validDept.php on line <i>10</i></th></tr> <tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr> <tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr> <tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0008</td><td bgcolor='#eeeeec' align='right'>371160</td><td bgcolor='#eeeeec'>{main}( )</td><td title='D:\wamp\www\Stage Orange\validDept.php' bgcolor='#eeeeec'>..\validDept.php<b>:</b>0</td></tr> </table></font> false
c'est donc que ta page de traitement php ne retourne pas jsuet true ou false, mais tout un code avant !
Franchement, c'est compliqué d'expliquer les choses à quelqu'un qui ne comprend pas ce qu'il fait...
Déjà, on t'a expliqué que JavaScript ne peut pas avoir accès aux variable PHP, donc dans
$array, il sort d'où ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part data: "dept=$array"
Ensuite, manifestement (si on en croit ton message d'erreur), ton script PHP attend un paramètre term, donc si tu lui envoie dept, ben ça marche moins bien.
Ensuite, une requête AJAX est asynchrone par défaut, donc ton test sur trouve=="false" ne risque pas d'être concluant puisqu'au moment où tu le fais, tu n'as pas reçu la réponse.
Enfin, tes return dans la fonction success ne servent à rien puisqu'il n'y a rien à qui renvoyer ce résultat !
Un classique AJAX : utiliser les données au bon moment !
Effectivement je ne comprends pas tout et c'est pour cela que je suis là.
J'ai compris qu'il fallait que je remplacepar autre chose. Peut être que je pourrait récupérer ma chaine de caractère grâce à l'ID de mon input et l'affecté dans non pas dept mais term. J'ai vu aussi que j'utiliser la méthode POST alors que dans mon code php j'essaie de récupérer une variable en GET. J'ai donc remplacer le GET par POST. Et pour les return, cette valeur ne s'affecte-t-elle pas à ma variable trouve ?
Code jscript : Sélectionner tout - Visualiser dans une fenêtre à part data:"dept=$array"
En lisant la publication de ton lien , j'ai compris qu'il fallait que j'utilise .send pour récupérer ma variable enfin si c'est bien ce qu'il faut faire.
Il faudrait donc que je rajouteavant succes ?
Code jscript : Sélectionner tout - Visualiser dans une fenêtre à part trouve.send('term=...');
Code : Sélectionner tout - Visualiser dans une fenêtre à part data:{"dept": valeur recupérée en javascript }
J'ai remplacé mon data parMais j'ai même plus d'affichage des alert. Ma ligne est donc fausse et je n'ai toujours pas mis le .send dans mon code car je ne sais pas où le mettre
Code : Sélectionner tout - Visualiser dans une fenêtre à part data: {"term":document.GetElementById('depart')}
deux erreurs en une seule ligne !
getElementById
et .value...
tu ne peux pas envoyer l'element par ajax, mais son value ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part data: {"term":document.getElementById('depart').value}
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager