IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

[AJAX] [JS/PHP] Ma responseXML est un document mais il ne contient rien


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Par défaut [AJAX] [JS/PHP] Ma responseXML est un document mais il ne contient rien
    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?

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Salut !
    Ton xml (qui est en fait du HTML) n'est pas valide, tu as 2 en-têtes
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<?xml version=\"1.0\"?>\n";
    et pas d'élément racine unique.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Salut !
    Ton xml (qui est en fait du HTML) n'est pas valide, tu as 2 en-têtes
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<?xml version=\"1.0\"?>\n";
    et pas d'élément racine unique.
    Alors ce que j'ai à faire est de supprimer par exemple : echo "<?xml version=\"1.0\"?>\n"; ?

    Par contre je ne vois pas ce que tu veux dire par élément racine unique Peux-tu me dire ce que c'est?

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Par défaut
    Je viens d'ajouter un élément racine "body" et j'obtiens toujours
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [XMLStylesheetProcessingInstruction, parsererror 0=XMLStylesheetProcessingInstruction 1=parsererror]
    comme donnée dans ma variable codeXHTML.

  5. #5
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Si tu nous montrais le xml généré directement ça serait plus facile

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Par défaut
    Je comprends et le voilà =)
    Code Xml : 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
     
    <body>
    	<div class="apercu">
    		<div class="apercuVideo">
    			<a href="video.php?id=2" title="aja aja">
    				<img alt="miniature" src="images/animaux/animaux02.jpg"/>
    			</a>
    		</div>
    		<div class="texteApercu">
    			<a title="aja aja" href="video.php?id=2">aja aja</a>
    			<br/>
    			joke joke
    			<br/>
    			itchi
    			<br/>
    			<div class="notation">
    				<img alt="note01" src="images/note01.jpg" class="notes"/>
    				<img alt="note02" src="images/note02.jpg" class="notes"/>
    				<img alt="note03" src="images/note03.jpg" class="notes"/>
    				<img alt="note04" src="images/note04.jpg" class="notes"/>
    				<img alt="note05" src="images/note05.jpg" class="notes"/>
    				<img alt="note06" src="images/note06.jpg" class="notes"/>
    				<img alt="note07" src="images/note07.jpg" class="notes"/>
    				<img alt="note08" src="images/note08.jpg" class="notes"/>
    			</div>
    		</div>
    	</div>
     
    	<div class="apercu">
    		<div class="apercuVideo">
    			<a href="video.php?id=1" title="wouhou vive la ville">
    				<img alt="miniature" src="images/animaux/animaux01.jpg"/>
    			</a>
    		</div>
    		<div class="texteApercu">
    			<a title="wouhou vive la ville" href="video.php?id=1">wouhou vive la ville</a>
    			<br/>
    			ahahah yatta bidoubidoubidou salutation au grand voyageur oulalal
    			<br/>
    			sami
    			<br/>
    			<div class="notation">
    				<img alt="note01" src="images/note01.jpg" class="notes"/>
    				<img alt="note02" src="images/note02.jpg" class="notes"/>
    				<img alt="note03" src="images/note03.jpg" class="notes"/>
    				<img alt="note04" src="images/note04.jpg" class="notes"/>
    			</div>
    		</div>
    	</div>
    </body>

    Finalement j'ai avancé, car grand idiot que je suis, je n'ai pas fait attention et ai mis l'en-tête dans l'élément racine. Du coup j'arrive à afficher le texte de ma première div.apercu mais sans les images et de son côté, Firebug me dit qu'aucun style n'est appliqué à la div qui vient d'être ajoutée. Est-ce que mon problème vient du fait que j'essai de faire passer du xhtml pour du xml?

    Pour finir voici une version plus récente de mon js
    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.firstChild.childNodes;
     
    		for (var i = 0; i<elementsApercu.length; i++){
    			divContenuTop10.appendChild(elementsApercu[i]);
    		}
    	}
    }

    En tout cas, merci pour l'aide que vous m'apportez

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 31/07/2017, 18h09
  2. [AJAX] Javacript & PHP dans le même document
    Par Soundboy39 dans le forum AJAX
    Réponses: 5
    Dernier message: 16/01/2012, 11h08
  3. Réponses: 4
    Dernier message: 19/06/2009, 13h38
  4. [AJAX] propriété responseXml est null
    Par oFlex dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 11/03/2007, 09h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo