2 votes

jQuery.get() : Essayer de récupérer le flux, mais les balises XML sont perdues

J'utilise jQuery pour récupérer automatiquement l'article le plus récent d'un blog. jQuery.get() va dans le flux RSS du blog et renvoie l'article le plus récent :
Voici ce que j'utilise :

$.get('http://url.to/feed', function(feed) {data = $(feed).find('item:first').text(); $('#testbox').html(data);}, 'xml');

Le problème est le suivant : cela ne sort que le texte du flux et les éléments HTML. Tout ce qui est comme <title>Title</title est simplement dépouillé en Title . J'ai besoin de garder tous ces éléments XML intacts afin de pouvoir donner un style adéquat aux choses.

J'ai aussi essayé .html() au lieu de .text() mais ça ne marche pas. L'utilisation de l'un ou l'autre ne fonctionne pas non plus (c.-à-d. data = $(feed).find('item:first'); ).

Comment puis-je télécharger et afficher une section d'un flux RSS sans dépouiller les balises XML ?
Merci !

2voto

Anthony Accioly Points 10501

Hum... Regardez si votre contenu ne peut pas être simplement enveloppé de <![CDATA[ et copié. Voir cette réponse (Je sais, abus de CDATA et tout, mais OP ne veut pas analyser le XML du tout, juste l'ajouter directement au DOM).

Mise à jour : ce qui a réellement fonctionné

Changez votre appel à la get pour qu'il interprète la réponse comme du texte pur et laisse JQuery créer l'arbre DOM pour vous. Jetez un coup d'oeil aquí .

2voto

Gaby aka G. Petrioli Points 85891

Si vous l'ajoutez, ça marche.

$(feed).find('item:first > *').appendTo('#testbox');

1voto

Jay Are Points 286

Essayez de retourner le noeud, et non le texte...

$.get('http://url.to/feed', function(feed) {
    data = $(feed).find('item:first'); 
    $('#testbox').html(data);
}, 'xml');

0voto

Jay Are Points 286

Et si vous essayiez quelque chose comme ça (ça a marché pour moi)...

Créez un fichier PHP (get_xml.php) avec les éléments suivants :

$xml = file_get_contents($_GET['url']);
header("Content-Type: text/xml");          
echo $xml;

Utilisez ensuite le jQuery suivant :

$.get("get_xml.php",{url:'http://url.to/feed/'}, function(data){
    var data = $(data).find('item:first');
    $('#testbox').html(data);
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X