Bonjour à tous,
je développe actuellement du code en ajax pour afficher un groupe de miniatures dans une zone dès lors que l'utilisateur choisit un groupe dans une liste déroulante.
Je rencontre le problème suivant : lorsque je commence à traiter mon objet XMLHttpRequest, l'attribut responseXML est bien un document mais il ne contient rien tandis que l'attribut responseText contient tout mon code.
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 function requeteTop10(valeurSelectionnee) { //On définit une variable nulle destinée à contenir un objet de type XMLHttpRequest var xhr = null; //On test si le navigateur prends en compte les requêtes de type XMLHttpRequest //Si c'est possible on créé un objet de type XMLHttpRequest pour les navigateurs types Firefox ou autre, ou alors de type ActiveX pour IE if(window.XMLHttpRequest) // Firefox et autres xhr = new XMLHttpRequest(); else if(window.ActiveXObject){ // Internet Explorer try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e1) { xhr = null; } } } else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHttpRequest..."); } //On définit l'appel de la fonction qui sera exécutée lorsque le serveur aura répondu xhr.onreadystatechange = affichageTop10; //On effectue la requête au fichier top10.php xhr.open("GET", "fonctionphpinc/top10.php?classement="+valeurSelectionnee, true); xhr.send(null); } function affichageTop10(){ //Si les données attendues sont bien arrivées if (this.readyState == 4) { //On supprime le code existant... var divContenuTop10 = document.getElementById("top10Contenu"); while (divContenuTop10.firstChild){ divContenuTop10.removeChild(divContenuTop10.firstChild); } //...et on ajoute le nouveau var codeXHTML = this.responseXML; var elementsApercu = codeXHTML.childNodes; for (var i = 0; i<elementsApercu.length; i++){ divContenuTop10.appendChild(elementsApercu[i]); } } }Après avoir parcourus les nombreuses ressources sur Ajax et PHP disponibles sur ce site, je ne trouve pas de solution à mon problème. Pourriez-vous m'aider s'il vous plait?
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 if(isset($_GET["classement"])){ //Cas de la requete via javascript header('Content-Type: text/xml'); echo "<?xml version=\"1.0\"?>\n"; //Connexion à la base de données require("connectionBDD.inc"); $pdo=connection(); //Choix du classement switch ($_GET["classement"]){ case "vues": $requete = "SELECT login, nom_video, description, URL, URLavatar, note FROM video, note WHERE video.id_video = note.id_video ORDER BY nbVues DESC LIMIT 0, 10;"; break; case "notees": $requete = "SELECT login, nom_video, description, URL, URLavatar, note FROM video, note WHERE video.id_video = note.id_video ORDER BY note DESC LIMIT 0, 10;"; break; case "postees": $requete = "SELECT login, nom_video, description, URL, URLavatar, note FROM video, note WHERE video.id_video = note.id_video ORDER BY date DESC LIMIT 0, 10;"; break; } //Envoi de la requête et affichage de la réponse echo "<?xml version=\"1.0\"?>"; foreach ($pdo->query($requete, PDO::FETCH_ASSOC) as $ligne){ echo "<div class=\"apercu\">\n"; echo "\t<div class=\"apercuVideo\">\n"; echo "\t\t<a href=\"".$ligne["URL"]."\" title=\"".$ligne["nom_video"]."\"><img alt=\"miniature\" src=\"".$ligne["URLavatar"]."\"/></a>\n"; echo "\t</div>\n"; echo "\t<div class=\"texteApercu\">\n"; echo "\t\t<a title=\"".$ligne["nom_video"]."\" href=\"".$ligne["URL"]."\">".$ligne["nom_video"]."</a><br/>\n"; echo "\t\t".$ligne["description"]."<br/>\n"; echo $ligne["login"]."<br/>\n"; echo "\t\t<div class=\"notation\" >\n"; for ($i = 1; $i<=$ligne["note"]; $i++){ echo "\t\t\t<img alt=\"note0".$i."\" src=\"images/note0".$i.".jpg\" class=\"notes\" />\n"; } echo "\t\t</div>\n"; echo "\t</div>\n"; echo "</div>\n"; } }
Partager