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]);
		}
	}
}
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";
	}
}
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?