Bonjour,
Je suis en stage et j'ai réaliser ce code pour une liste déroulante dynamique grace à : http://siddh.developpez.com/articles/ajax/#LI. Mais ma 2ème liste déroulante ne se génère pas et Opera me donne comme erreur ceci :
Uncaught exception: TypeError: Cannot convert 'sel' to object
Error thrown at line 41, column 4 in go() in http://localhost/Clinique%20de%20Fon...+les+machines:
numCategorie = sel.options[sel.selectedIndex].value;
called from line 1, column 0 in <anonymous function>(event) in http://localhost/Clinique%20de%20Fon...+les+machines:
go()
Pouvez-vous m'aider à la résoudre ?
Voici mon code :
lstMachine.php
ajaxMachine.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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102 <!doctype html> <html lang="fr"> <head> <meta charset="ISO 8859-10" /> <title>Clinique de Fontaine - lstMachine.php</title> <link href="cssMaintenance.css" rel="stylesheet" /> <title>Tutoriel Ajax (XHTML + JavaScript + XML)</title> <script type='text/javascript' > function getXhr(){ var xhr = null; if(window.XMLHttpRequest) // Firefox et autres xhr = new XMLHttpRequest(); else if(window.ActiveXObject){ // Internet Explorer try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } } else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); xhr = false; } return xhr; } /** * Méthode qui sera appelée sur le click du bouton */ function go(){ var xhr = getXhr(); // On défini ce qu'on va faire quand on aura la réponse xhr.onreadystatechange = function(){ // On ne fait quelque chose que si on a tout reçu et que le serveur est ok if(xhr.readyState == 4 && xhr.status == 200){ leselect = xhr.responseText; // On se sert de innerHTML pour rajouter les options a la liste document.getElementById('machine').innerHTML = leselect; } } // Ici on va voir comment faire du post xhr.open("POST","ajaxMachine.php",true); // ne pas oublier ça pour le post xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); // ne pas oublier de poster les arguments // ici, l'id de l'auteur sel = document.getElementById('categorie'); numCategorie = sel.options[sel.selectedIndex].value; xhr.send("numCategorie="+numCategorie); } </script> </head> <body> <div id="contener"> <header> <div id="banniere"> </div> <h1>Liste des Machines</h1> </header> <nav> <ul> <li><a href="Page1.php">Accueil</a></li> <li><a href="lstMachine.php">Consulter les machines</a></li> <li><a href="calendrier.php">Consulter le calendrier</a></li> </ul> </nav> <article> <form id="formAfficherLst" name="formAfficherLst" action="formAfficher.php" method="GET"> <fieldset> <legend>Liste des Machines</legend> Choisir une Catégorie <select name="zldCategorie" id="zldCategorie" onchange='go()'> <option value='-1'>AUCUN</option> <?php include("connexion.php"); // requete allant chercher toute les machines. $req = "Select numeroC, nomC FROM CATEGORIE ORDER BY nomC;"; $rsLstMachine = mysql_query($req, $connexion); // Tant que il y a des machines afficher . while ($lsLstMachine = mysql_fetch_array($rsLstMachine)) { echo "<option value=".$lsLstMachine['numeroC'].">".$lsLstMachine['nomC']."</option>"; } ?> </select> <br></br> Choisir une Machine <select name='zldMachine' id='zldMachine' style='display:inline'> <option value='-1'>Choisir une Catégorie</option> </select> <input type="submit" name="btAfficher" value="Afficher" /> </fieldset> <br></br> </form> </article> <footer> <p>Site developpe en <img src="image/HTML5_Logo_32.png" alt="logo html5"/> <br /> Derniere mise a jour le <time datetime="2012-02-06" pubdate>06 Fevrier 2012</time>.</p> </footer> </div> </body> </html>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?php include("connexion.php"); echo "<select name='zldMachine' id='zldMachine' style='display:inline'>"; if(isset($_POST["numCategorie"])){ $res = mysql_query("SELECT codeMachine, designation FROM Machine WHERE numCategorie=".$_POST["numCategorie"]." ORDER BY designation"); while($row = mysql_fetch_assoc($res)){ echo "<option value=".$row["codeMachine"].">".$row["designation"]."</option>"; } } echo "</select>"; ?>
Partager