2010-01-28 5 views
0

Est-il possible de se connecter à un flux RSS, récupérer l'objet XML puis analyser et afficher tout cela dans le javascript/AJAX client?flux RSS avec AJAX et javascript seulement

Merci,

+0

Y a-t-il une raison spécifique pour laquelle tout devrait être du côté client? Un morceau de Javascript peut facilement appeler un script sur le serveur pour faire ce travail et ensuite renvoyer les résultats à la partie de Javascript. –

+0

Je préfère faire tout le côté client pour le débogage sans déployer sur le serveur – test

+0

http://stackoverflow.com/questions/226663/parse-rss-with-jquery –

Répondre

0

Sous réserve de l'Same Origin Policy, oui. http://www.xml.com/lpt/a/1672 a un exemple (bien que, franchement, le code n'est pas très bon, vous commencez à frapper des variables globales dans la première fonction).

+0

Donc, ce serait effectivement capable de consommer un flux uniquement sur le même domaine? – test

+0

Dans un contexte de sécurité standard - oui. Bien sûr, vous pouvez utiliser des choses proxy sur votre propre serveur. – Quentin

+0

@Dhaivat - la question ne mentionne pas Phonegap. Confondez-vous cette question avec [celui entièrement séparé que vous avez demandé] (http://stackoverflow.com/questions/6483804/phonegap-rss-feeds-javascript) ?! – Quentin

0

C'est techniquement possible.

Cependant, il existe des limites du côté du navigateur: les requêtes AJAX (XHR/XMLHttpRequest) ne peut se faire sur le même domaine qui héberge votre script javascript (s).

Cela signifie qu'un script hébergé sur http://example.com/ ne peut pas effectuer un XHR sur http://domain.com/.

Vous pouvez contourner cette limitation en utilisant un proxy script côté serveur. E.g: http://example.com/getFeed.php?feed=the_complete_url_of_the_targeted_feed

0

Oui, certainement possible. Un exemple du monde réel suit:

<div id='tagged'></div> 

<script type="text/javascript"> 

$.get('http://stackoverflow.com/feeds/user/40986', function(data){ 
    $(data).find('entry').each(function(){ 
     var $rssLink = $('<a></a>') 
      .attr('href', $(this).find('link').attr('href')) 
      .append($(this).find('id').text()); 
     var $divContainer = $('<div></div>'); 
     $rssLink.appendTo($divContainer); 
     $divContainer.appendTo('#tagged'); 
    }); 
}); 

</script> 

En utilisant jQuery je reçois mon StackOverflow flux rss et imprimer un lien vers chaque entrée.

+0

Je voudrais plus d'explications, considérant que d'autres disent que ce n'est pas possible en raison des règles XHR. J'ai copié/collé votre code sur un site de test maintenant, en changeant l'URL, et je n'ai pas obtenu de résultats. – Ziggy