Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/04/2011, 17h47   #1
Membre habitué
 
Homme
Développeur Web
Inscription : janvier 2008
Messages : 365
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2008
Messages : 365
Points : 140
Points : 140
Par défaut Récupérer données d'un XML

Bonjour,

Je cherche à récupérer les informations contenu dans un XML avec JQuery :

Mon XML :

Citation:
<barre>
<![CDATA[<div>Un peu de HTML BlaBla</div>]]>
</barre>
<menu>
<resultat>
<site>
<CodeSite>237</CodeSite>
<NbItemSite>0</NbItemSite>
</site>
<site>
<CodeSite>37</CodeSite>
<NbItemSite>0</NbItemSite>
</site>
</resultat>
</menu>
Mon Jquery :


Code :
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
 
$.ajax({
type: 'GET',
url: 'ajax/MAJBarre.php',
success: function (reponsexml) {	
	var reponse = $(reponsexml).find('barre').text();
 
	alert("Reponse : "+reponse);
 
	if ($("#BarreMessageHidden").val() != 1)
	{
		$("#ConteneurBarre").html(reponse);
		$("#ConteneurBarre").hide();
		$("#ConteneurBarre").slideDown(750); 
		$("#BarreMessageHidden").val('1');
	}
	else
	{
		$("#ConteneurBarre").html(reponse);
	}
 
	MAJCompteur($(reponsexml).find('menu').text());
 
	}
});
Seulement le alert(reponse) retourne un résultat vide.

Merci
Khleo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 18h02   #2
Expert Confirmé Sénior
 
Inscription : septembre 2004
Messages : 5 064
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 064
Points : 6 981
Points : 6 981
Je ne sais pas si le problème est là, mais un document XML ne peut avoir qu'un seul élément racine, alors que là tu en as deux : <barre> et <menu>.

Pour que ce soit un vrai document XML, il te faudrait un truc genre

Code :
1
2
3
4
5
6
7
8
<content>
  <barre>
    ...
  </barre>
  <menu>
    ...
  </menu>
</content>
(Je suis surpris que jQuery ne propose pas d'interpréter la réponse comme un fragment XML, mais bon.)
thelvin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 18h28   #3
Membre habitué
 
Homme
Développeur Web
Inscription : janvier 2008
Messages : 365
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2008
Messages : 365
Points : 140
Points : 140
Effectivement ça fonctionne un peu mieux.

J'étais tellement sur que le problème venait du Jquery que je n'ai pas pensé à regarder le XML.

Cependant il reste encore des problèmes :

Entre les balises <barre></barre> je dois récupérer du HTML qui sera directement inséré dans ma page avec $("#ConteneurBarre").html(reponse);, mais il me retire toutes les balises HTML et m'affiche uniquement du texte brute. J'ai essayé en ajoutant <![CDATA[ ]]>, mais le problème persiste.

Puis, je dois interpreter le contenu de <menu></menu> avec une fonction :

Code :
MAJCompteur($(reponsexml).find('menu').text());
Code :
1
2
3
4
MAJCompteur(xml)
{
alert(xml);
}
L'alerte me retourne les informations contenu dans <menu/> mais sans les balises xml (15258546511235), ce qui prose problème pour parser le résultat.

Merci
Khleo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 11h56   #4
Membre habitué
 
Homme
Développeur Web
Inscription : janvier 2008
Messages : 365
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2008
Messages : 365
Points : 140
Points : 140
J'ai trouvé : il ne fallait pas utiliser $(reponsexml).find('barre').text() mais $(reponsexml).find('barre').html()

Par contre, lorsqu'il m'ajoute mon html, il m'affiche le ]]> alors que le <![CDATA[, lui, est bien enlevé.

Merci
Khleo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 14h13   #5
Membre habitué
 
Homme
Développeur Web
Inscription : janvier 2008
Messages : 365
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2008
Messages : 365
Points : 140
Points : 140
Salut,

J'ai supprimé <![CDATA[ ]]> de mon XML et ça fonctionne correctement maintenant.

++
Khleo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h39.


 
 
 
 
Partenaires

Hébergement Web