Bonjour.
J'ai commencé à me renseigner un peu sur l'Ajax et j'ai un petit soucis au niveau des fonctions de callback.
Au lieu d'afficher les données que je voudrais, ça me met "undefined"
Je vous poste mon code :
testajax.js
testajax_traitement.php
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 function getXMLHttpRequest() { var xhr = null; if (window.XMLHttpRequest || window.ActiveXObject) { if (window.ActiveXObject) { try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } } else { xhr = new XMLHttpRequest(); } } else { alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest..."); return null; } return xhr; } function request(callback, str) { var xhr = getXMLHttpRequest(); alert(str); xhr.onreadystatechange = function() { if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) { //document.getElementById("text").innerHTML=xhr.responseText; callback(xhr.reponseText); } }; xhr.open("GET", "testajax_traitement.php?liste=" + str , true); xhr.send(null); } function readData(sel) { //alert(sel); document.getElementById("text").innerHTML=sel; }
testajax.php
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 <?php include_once("connexion_bdd.php"); if(isset($_GET['liste'])) { echo $_GET['liste']; $req= 'SELECT * FROM identite WHERE nom=:nom'; //$req = 'SELECT * FROM identite'; //$reponse = query($req); $reponse = $bdd->prepare($req) or die(print_r($bdd->errorInfo())); $reponse->execute(array('nom'=>$_GET['liste'])); $str = '<table>'; while ($donnees = $reponse->fetch()) { $str .='<tr> <td>'.$donnees["id"].'</td> <td>'.$donnees["nom"].'</td> <td>'.$donnees["prenom"].'</td> <td>'.$donnees["profession"].'</td> </tr>'; } $str.='</table>'; echo $str; } ?>
Je précise que sans passer par le callback, ça fonctionne bien. Il doit y'avoir un problème lors du passage du paramètre xhr.reponseText à la fonction readData mais je vois pas trop c'est quoi :s
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 <html> <head> <script type="text/javascript" src="testajax.js"></script> </head> <body> <?php include_once("connexion_bdd.php"); $req2 = 'SELECT DISTINCT nom FROM identite ORDER BY nom'; $reponse2 = $bdd->query($req2) or die(print_r($bdd->errorInfo())); $str = ' <br /><br /> <select name="nom" id="liste" onchange="request(readData, this.value)">'; while($donnees2 = $reponse2->fetch()) { $str .= '<option value='.$donnees2['nom'].'>'.$donnees2['nom'].'</option>'; } $str.= '</select> '; $reponse2->closeCursor(); echo $str; ?> <div id="text"></div> </body> </html>
Si quelqu'un pouvait m'aider, je en lui remercie d'avance ^^
Partager