2009-06-14 12 views
4

Ich versuche, den Titel meiner neuesten stumbleupon Artikel mit ihrem RSS-Feed und Jquery zu zeigen. Die Funktion, die ich habe, ist:Lesen von RSS-Feed mit jQuery

function get_stumbleupon() { 
    $.get("http://rss.stumbleupon.com/user/fredkelly/", function(data) { 
     alert(data.title); 
    }, "xml"); 
} 

die nichts zurück ... Ich will einfach nur ein paar Bits von Informationen über den einzigen neuesten Artikel im Futter bekommen - wie ich dies tun kann?

Antwort

4

Here's a tutorial wie Cross-Domain-Ajax mit JQuery zu tun.

+0

In diesem Tutorial stellen Sie sicher, den Link zum "universal RSS zu JSON-Konverter" zu folgen. – Josh

0

Wie das vorherige Poster (Waage) erwähnt, Sie wahrscheinlich einige Cross-Site Scripting, die eine Sicherheitsverletzung auf den meisten Browsern ist. Was Sie tun müssen, ist eine Art Pass-Through zu erstellen (der Client ruft Ihre Site an, Ihre Site lädt den Inhalt einer anderen Site herunter und gibt sie an den Client zurück).

Dies ist normalerweise ziemlich einfach, unabhängig davon, welches Server-Backend Sie verwenden. Es ermöglicht Ihnen auch, einige erweiterte Funktionen mit anderen Personen Daten wie Caching zu tun.

+1

Dies ist im Grunde ein sogenannter "Proxy-Server" für diejenigen, die mit Richards Lösung nicht vertraut sind. – jmort253

1

Ólafur Waage gab eine gute Cross-Site-Anfrage Thema, aber es gibt auch einen anderen Beitrag, der eigentlich besser mit Ihrem Cross Site RSS reading Problem passt.

1

Hier ist mein kleines Skript:

<script type="text/javascript"> 
jQuery(document).ready(function(){ 
jQuery.ajax({ 
    url: "/feed.xml", // RSS url 
    success: function(msg){ 
    jQuery('#blip').html(''); // where to put RSS 
    jQuery('entry',msg).slice(0,3).each(function(){ // slice: get only first 3 posts 
     var html = '<div>'; 
     var upd = jQuery('updated', this).text().replace(/[TZ]/g, ' '); 
     var upd = jQuery.trim(jQuery('updated', this).text()); 
     upd = upd.replace(/-/g,"/").replace(/T/," ").replace(/Z/," UTC"); 
     upd = upd.replace(/([\+-]\d\d)\:?(\d\d)/," $1$2"); 
     updf = new Date(upd).toLocaleString(); 
     html += '<p class="post_date">' + updf + '</p>'; 
     html += '<div class="post_content"><span>' + jQuery('content', this).text() + '</span></div>'; 
     html += '</div>'; 
     jQuery(html).appendTo('#blip'); 
    }); 
    }, 
    error: function (XMLHttpRequest, textStatus, errorThrown) { alert(errorThrown);} 
}); 
}); 
</script>