Bonjour à tous
J'ai cherché un peu sur le forum, dans les tutos, j'ai essayé tout un tas de truc, mais je n'arrive décidemment pas à résoudre mon problème, problème que vous trouverez peut-être simple, mais là moi je suis un newb total en ce qui concerne Javascript et encore plus Ajax![]()
J'ai un formulaire dans une page, je souhaite envoyer par la méthode POST les données à une page de traitement PHP qui m'affichera un résultat dans une DIV au dessus du formulaire, bien évidemment en utilisant Ajax.
Alors j'arrive bien à appeller mon code Ajax, je récupère correctement les données (j'utilise un alert() pour controler), je les met en forme comme je l'ai vu dans le forum pour les passer avec xhr.send(), mais là dans le script PHP de traitement, les variables POST ne sont pas reconnus et bien évidemment le traitement foire. Est-ce que vous avez une idée de mon erreur svp?
Sachant que le fichier de traitement est trouvé et que les données récupérées par Javascript sont les bonnes. Il semble donc que c'est dans la transmission ou alors dans ma façon de récupérer les données dans le traitement PHP que ça cafouille...
Voilà le code du formulaire:
Code Ajax utilisé:
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 <div id="alerte"></div> Vous pouvez modifier votre mot de passe grâce au formulaire suivant : <br><br> <form name="modifpwd" onsubmit="javascript: return false;"> <table> <tr> <td>Votre mot de passe actuel : </td> <td><input type="password" name="old_pwd"></td> </tr> <tr> <td>Votre nouveau mot de passe : </td> <td><input type="password" name="new_pwd"></td> </tr> <tr> <td>Confirmez votre nouveau mot de passe : </td> <td><input type="password" name="new_pwd1"></td> </tr> <tr> <td align="right" colspan="2"><input type="submit" value="Modifier" name="cmdok" onclick="javascript: ajax('op/op-changePWD.php', 'alerte', 'POST', 'modifpwd');" /></td> </tr> </table> </form>
Le code PHP de traitement (j'ai retiré le script de connexion pour raisons de confidentialité):
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
37
38
39
40
41
42
43
44 <script language="JavaScript"> function getFormData(form) { var data = ""; var form = document.getElementById(form); var elements = form.elements; for(var i=0; i<form.length; i++) { data += elements[i].name + "=" + elements[i].value; if((i+1)<form.length) { data+="&"; } //alert('Element: '+elements[i].name+" \nValeur: "+elements[i].value); } return data; } function ajax(fichier, div, method, form) { var xhr=null; var data="null"; if(form!="null") { data = getFormData(form); } if (window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } else if (window.ActiveXObject) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } //on appelle le fichier reponse.txt xhr.open( method, fichier, false); alert("Fichier: "+fichier+"\nDonnées: "+data); xhr.send(data); document.getElementById(div).innerHTML=xhr.responseText; } </script>
Voici le retour de l'exécution et donc ce que s'affiche dans mon DIV:
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 <? $query = "SELECT id, password FROM user WHERE login='".$_SESSION['site-log']."' AND etat=1"; $req = mysql_query($query) or die ("Erreur SQL de vérification de compte"); $rez = mysql_fetch_assoc($req); $resultat="0"; if($_POST['old_pwd']!="") { $old_pwd=$_POST['old_pwd']; } else { $resultat="c3"; } if($resultat==0 && md5($old_pwd)!=$rez['password']) { $resultat="c3"; } if($resultat==0 && $_POST['new_pwd']!="") { $new_pwd=$_POST['new_pwd']; } else { $resultat="c2"; } if($resultat==0 && $_POST['new_pwd1']!="") { $new_pwd1=$_POST['new_pwd1']; } else { $resultat="c2"; } if($resultat==0 && $new_pwd1!=$new_pwd) { $resultat="c2"; } if($resultat==0) { $query = "UPDATE user SET password='".md5($new_pwd)."' WHERE id=".$rez['id']; $req = mysql_query($query) or die ("Erreur SQL de modification de compte"); $_SESSION['studionet-pwd']=md5($_POST['new_pwd']); $resultat="c1"; } echo($resultat); ?>
Comme vous pouvez le voir, aucune donnée n'a été récupérée par PHP. Comme qui dirait, c'est un peu génant. Donc si vous pensez pouvoir m'aider, n'hésitez pas. Merci d'avance.
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 Notice: Undefined index: old_pwd in c:\program files\easyphp1-8\www\studionet\op\op-changepwd.php on line 33 Notice: Undefined variable: old_pwd in c:\program files\easyphp1-8\www\studionet\op\op-changepwd.php on line 42 Notice: Undefined index: new_pwd in c:\program files\easyphp1-8\www\studionet\op\op-changepwd.php on line 47 Notice: Undefined index: new_pwd1 in c:\program files\easyphp1-8\www\studionet\op\op-changepwd.php on line 56 Notice: Undefined variable: new_pwd1 in c:\program files\easyphp1-8\www\studionet\op\op-changepwd.php on line 65 Notice: Undefined variable: new_pwd in c:\program files\easyphp1-8\www\studionet\op\op-changepwd.php on line 65 Notice: Undefined variable: new_pwd in c:\program files\easyphp1-8\www\studionet\op\op-changepwd.php on line 72 Notice: Undefined index: new_pwd in c:\program files\easyphp1-8\www\studionet\op\op-changepwd.php on line 74 c1
Gwinyam
Partager