Analysieren Sie RSS mit jQuery

194

Ich möchte jQuery verwenden, um RSS-Feeds zu analysieren. Kann dies mit der sofort einsatzbereiten jQuery-Basisbibliothek durchgeführt werden oder muss ich ein Plugin verwenden?

Andy Brudtkuhl
quelle
1
Ich würde mich für github.com/sdepold/jquery-rss entscheiden - es ist momentan die beste Option, mehrere Optionen verfügbar! :)
Komrath
Für jeden, der hier von Google landet, musste ich eine ähnliche Sache für einen deviantART Thumbnail Viewer erstellen. Schön und einfach und leicht erweiterbar: adamjamesnaylor.com/2012/11/05/… . Beachten Sie, dass der Feed-Reader von Google verwendet wird, jedoch nur, um ihn in JSON zu konvertieren.
Adam Naylor

Antworten:

208

WARNUNG

Die Google Feed API ist offiziell veraltet und funktioniert nicht mehr !


Kein ganzes Plugin erforderlich. Dadurch wird Ihr RSS als JSON-Objekt an eine Rückruffunktion zurückgegeben:

function parseRSS(url, callback) {
  $.ajax({
    url: document.location.protocol + '//ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&callback=?&q=' + encodeURIComponent(url),
    dataType: 'json',
    success: function(data) {
      callback(data.responseData.feed);
    }
  });
}
Andrew Childs
quelle
4
Versuchte jFeed und es hat nicht funktioniert, dies funktioniert gut und erfordert keine zusätzliche Bibliothek.
Diggersworld
15
Beachten Sie, dass bei Verwendung der Google-API die Feeds zwischengespeichert werden, sodass Sie nicht die neuesten und besten Feeds erhalten.
c0deNinja
3
Wo wird es zwischengespeichert? Wie kann ich den Cache entfernen?
Jeg Bagus
39
Dies ist keine gute Antwort. Es ist davon abhängig, dass ein Drittunternehmen [Google] seinen Dienst aufrechterhält. Es beantwortet nicht die ursprüngliche Frage ("RSS mit jQuery analysieren") und wirbt stattdessen für Google. Was ist, wenn Google die Ajax-API löscht oder ändert? Ihre Website bricht.
Charles Goodwin
11
@CharlesGoodwin Google hat diese API gerade entfernt! developer.google.com/feed/?hl=de
GôTô
185

Verwenden Sie jFeed - ein jQuery RSS / Atom-Plugin. Laut den Dokumenten ist es so einfach wie:

jQuery.getFeed({
   url: 'rss.xml',
   success: function(feed) {
      alert(feed.title);
   }
});
Nathan Strutz
quelle
2
Gibt es Beispiele für die Verwendung in der realen Welt? dh eher analysieren und anzeigen als alarmieren. oder ist es so einfach wie $ ("# results"). append (feed.title)
Andy Brudtkuhl
3
HINWEIS: Der Download enthält alle Arten von großartigen Beispielen
Andy Brudtkuhl
12
Anirudha, vielleicht kannst du 7-zip ausprobieren? Es ist kostenlos, Open Source und öffnet eine Vielzahl von Dateitypen, einschließlich tar / gzip.
Nathan Strutz
100
Bitte beachten Sie, dass die neueste Version dieses Plugins auf Github verfügbar ist .
Alan H.
3
jFeed scheint nicht mehr aktiv gewartet zu werden (die letzte Änderung der Notiz ist 2 Jahre alt und viele Open-Pull-Anforderungen scheinen ignoriert zu werden) und funktioniert nicht mit aktuellen Versionen von jQuery.
Thilo
159

Für diejenigen von uns, die spät zur Diskussion kommen, hat jQuery ab 1.5 integrierte XML-Parsing-Funktionen, was es ziemlich einfach macht, dies ohne Plugins oder Dienste von Drittanbietern zu tun. Es verfügt über eine parseXml-Funktion und analysiert xml automatisch, wenn die $ .get-Funktion verwendet wird. Z.B:

$.get(rssurl, function(data) {
    var $xml = $(data);
    $xml.find("item").each(function() {
        var $this = $(this),
            item = {
                title: $this.find("title").text(),
                link: $this.find("link").text(),
                description: $this.find("description").text(),
                pubDate: $this.find("pubDate").text(),
                author: $this.find("author").text()
        }
        //Do something with item here...
    });
});
David Hammond
quelle
10
XmlHttpRequest Fehler: Origin ist nicht erlaubt von Access-Control-Allow-Origin
jackocnr
12
@jackocnr, ja das ist der Nachteil dieser Methode. Sie können keine domänenübergreifenden Anforderungen ausführen, es sei denn, Sie haben Zugriff, um den Header Access-Control-Allow-Origin auf dem Quellserver festzulegen. Wenn der Server jsonp unterstützt, ist dies die beste Wahl. Andernfalls verwenden Sie möglicherweise ein Proxy-Skript in Ihrer Domäne, um die XML-Datei abzurufen, und rufen dieses Skript dann anstelle des externen Servers auf.
David Hammond
Ist dies wirklich die einzige Antwort, die nicht auf externen Plugins oder Diensten beruht?
Blazemonger
Warum gibt der $this.find("link").text()immer leere String '' zurück?
Jeff Tian
@ JeffTian, ​​schwer zu sagen, ohne deine XML zu sehen. Der offensichtlichste Grund wäre, dass das <link> -Element fehlt oder leer ist.
David Hammond
16

jFeed funktioniert im IE nicht.

Verwenden Sie zRSSFeed . Hatte es in 5 Minuten funktioniert

Mark Steggles
quelle
2
Verfügbar unter zazar.net/developers/zrssfeed Es ist vielversprechend, es selbst auszuprobieren, um zu sehen, wie es läuft .
Thewinchester
3
Übrigens verwendet zRssFeed intern die Google Feed RSS-API . Wenn man also das HTML-Layout selbst erstellen möchte, ist es einfacher, stattdessen direkt darauf zu schauen.
Ciantic
fünf Minuten oder weniger :)
Constanta
super cool ... nur, wenn sie die Feed-Objekte und nicht das gesamte HTML in einer Rückruffunktion
bereitstellen
2
Zu Ihrer Information, jeder, der dieses Plugin verwenden möchte. Der Entwickler hat Folgendes gepostet. "DIESES PLUGIN WIRD ABGESETZT Da die Google Feeds-API aus dem Dienst entfernt wurde, auf die das Plugin geantwortet hat, ist sie nicht mehr verfügbar oder wird nicht mehr unterstützt." Quelle: zazar.net/developers/jquery/zrssfeed
Phanf
16

Update (15. Oktober 2019)

Ich habe die Kernlogik aus jquery-rss in eine neue Bibliothek namens Vanilla RSS extrahiert, die die Abruf-API verwendet und ohne zusätzliche Abhängigkeiten arbeiten kann:

const RSS = require('vanilla-rss');
const rss = new RSS(
    document.querySelector("#your-div"),
    "http://www.recruiter.com/feed/career.xml",
    { 
      // options go here
    }
);
rss.render().then(() => {
  console.log('Everything is loaded and rendered');
});

Original

Post:

Sie können auch jquery-rss verwenden , das mit schönen Vorlagen geliefert wird und sehr einfach zu bedienen ist:

$("#your-div").rss("http://www.recruiter.com/feed/career.xml", {
    limit: 3,
    layoutTemplate: '<ul class="inline">{entries}</ul>',
    entryTemplate: '<li><a href="{url}">[{author}@{date}] {title}</a><br/>{shortBodyPlain}</li>'
})

Renditen (Stand 18. September 2013):

<div id="your-div">
    <ul class="inline">
    <entries></entries>
    </ul>
    <ul class="inline">
        <li><a href="http://www.recruiter.com/i/when-to-go-over-a-recruiter%e2%80%99s-head/">[@Tue, 10 Sep 2013 22:23:51 -0700] When to Go Over a Recruiter's Head</a><br>Job seekers tend to have a certain "fear" of recruiters and hiring managers, and I mean fear in the reverence and respect ...</li>
        <li><a href="http://www.recruiter.com/i/the-perfect-job/">[@Tue, 10 Sep 2013 14:52:40 -0700] The Perfect Job</a><br>Having long ago dealt with the "perfect resume" namely God's, in a previous article of mine, it makes sense to consider the ...</li>
        <li><a href="http://www.recruiter.com/i/unemployment-benefits-applications-remain-near-5-year-low-decline-again/">[@Mon, 09 Sep 2013 12:49:17 -0700] Unemployment Benefits Applications Remain Near 5-Year Low, Decline Again</a><br>As reported by the U.S. Department of Labor, the number of workers seeking unemployment benefits continued to sit near ...</li>
    </ul>
</div>

Ein funktionierendes Beispiel finden Sie unter http://jsfiddle.net/sdepold/ozq2dn9e/1/ .

sdepold
quelle
Beachten Sie, dass jquery-rss die Google Feed-API verwendet, mit der der Feed zwischengespeichert wird, was ein Problem darstellen kann. Sie können es austricksen,
kukabuka
Bitte geben Sie ein Beispiel für die Formatierung des Datums ohne Verwendung vonmoment.js
Purvesh Desai
Überprüfen Sie das folgende Snippet gist.github.com/sdepold/d1e5e0e7a66fc77930fe Es wird ungefähr so etwas generiert: "<einige Inhalte>, [@ 2015-11-18]"
sdepold
Ich wollte nur erwähnen, dass jquery-rss NICHT die Google Feed-API verwendet, sondern einen Drop-In-Ersatz namens Feedr ( github.com/sdepold/feedrapp ) und trotz der Deaktivierung der ursprünglichen API einwandfrei funktioniert.
Sdepold
15

Verwenden von JFeed

function getFeed(sender, uri) {
    jQuery.getFeed({
        url: 'proxy.php?url=' + uri,
        success: function(feed) {
            jQuery(sender).append('<h2>'
            + '<a href="'
            + feed.link
            + '">'
            + feed.title
            + '</a>'
            + '</h2>');

            var html = '';

            for(var i = 0; i < feed.items.length && i < 5; i++) {

                var item = feed.items[i];

                html += '<h3>'
                + '<a href="'
                + item.link
                + '">'
                + item.title
                + '</a>'
                + '</h3>';

                html += '<div class="updated">'
                + item.updated
                + '</div>';

                html += '<div>'
                + item.description
                + '</div>';
            }

            jQuery(sender).append(html);
        }    
    });
}

<div id="getanewbrowser">
  <script type="text/javascript">
    getFeed($("#getanewbrowser"), 'http://feeds.feedburner.com/getanewbrowser')
  </script>
</div>
Andy Brudtkuhl
quelle
9

Verwenden Sie die Google AJAX-Feed-API, es sei denn, Ihre RSS-Daten sind privat. Es ist natürlich schnell.

https://developers.google.com/feed/

Yogman
quelle
1
Eine gute Idee, funktioniert aber nicht, wenn Sie sich in einer Firewall befinden, für die eine Proxy-Authentifizierung mithilfe eines Dialogfelds erforderlich ist.
Thewinchester
Der Google-Feed ist veraltet und wird nicht mehr unterstützt.
Vikas Etagi
8

UPDATE [ 25.04.2016 ] Jetzt besser geschriebene und vollständig unterstützte Version mit mehr Optionen und Fähigkeiten, die auf GitHub.jQRSS gehostet werden

Ich habe die ausgewählte Antwort von Nathan Strutz gesehen , aber der Link auf der jQuery Plugin-Seite ist immer noch nicht verfügbar und die Homepage für diese Site schien nicht geladen zu sein. Ich habe ein paar andere Lösungen ausprobiert und festgestellt, dass die meisten nicht nur veraltet, sondern auch EINFACH sind ! Also habe ich meinen Hut rausgeworfen und mein eigenes Plugin erstellt, und mit den toten Links hier scheint dies ein großartiger Ort zu sein, um eine Antwort einzureichen. Wenn Sie nach dieser Antwort im Jahr 2012 (bald bis b 2013) suchen, werden Sie möglicherweise die Frustration über tote Links und alte Ratschläge hier bemerken, wie ich es getan habe. Unten finden Sie einen Link zu meinem modernen Plugin-Beispiel sowie den Code zum Plugin! Kopieren Sie einfach den Code in eine JS-Datei und verknüpfen Sie ihn wie jedes andere Plugin in Ihrem Header. Verwendung ist EXTREM EZ!

jsFiddle

Plugin Code
09.02.2015 - längst überfälliges Update durchgeführt, um zu prüfen, consolebevor Befehle an es gesendet werden ! Sollte bei älteren IE-Problemen helfen.

(function($) {
    if (!$.jQRSS) { 
        $.extend({  
            jQRSS: function(rss, options, func) {
                if (arguments.length <= 0) return false;

                var str, obj, fun;
                for (i=0;i<arguments.length;i++) {
                    switch(typeof arguments[i]) {
                        case "string":
                            str = arguments[i];
                            break;
                        case "object":
                            obj = arguments[i];
                            break;
                        case "function":
                            fun = arguments[i];
                            break;
                    }
                }

                if (str == null || str == "") {
                    if (!obj['rss']) return false;
                    if (obj.rss == null || obj.rss == "") return false;
                }

                var o = $.extend(true, {}, $.jQRSS.defaults);

                if (typeof obj == "object") {
                    if ($.jQRSS.methods.getObjLength(obj) > 0) {
                        o = $.extend(true, o, obj);
                    }
                }

                if (str != "" && !o.rss) o.rss = str;
                o.rss = escape(o.rss);

                var gURL = $.jQRSS.props.gURL 
                    + $.jQRSS.props.type 
                    + "?v=" + $.jQRSS.props.ver
                    + "&q=" + o.rss
                    + "&callback=" + $.jQRSS.props.callback;

                var ajaxData = {
                        num: o.count,
                        output: o.output,
                    };

                if (o.historical) ajaxData.scoring = $.jQRSS.props.scoring;
                if (o.userip != null) ajaxData.scoring = o.userip;

                $.ajax({
                    url: gURL,
                    beforeSend: function (jqXHR, settings) { if (window['console']) { console.log(new Array(30).join('-'), "REQUESTING RSS XML", new Array(30).join('-')); console.log({ ajaxData: ajaxData, ajaxRequest: settings.url, jqXHR: jqXHR, settings: settings, options: o }); console.log(new Array(80).join('-')); } },
                    dataType: o.output != "xml" ? "json" : "xml",
                    data: ajaxData,
                    type: "GET",
                    xhrFields: { withCredentials: true },
                    error: function (jqXHR, textStatus, errorThrown) { return new Array("ERROR", { jqXHR: jqXHR, textStatus: textStatus, errorThrown: errorThrown } ); },
                    success: function (data, textStatus, jqXHR) {  
                        var f = data['responseData'] ? data.responseData['feed'] ? data.responseData.feed : null : null,
                            e = data['responseData'] ? data.responseData['feed'] ? data.responseData.feed['entries'] ? data.responseData.feed.entries : null : null : null
                        if (window['console']) {
                            console.log(new Array(30).join('-'), "SUCCESS", new Array(30).join('-'));
                            console.log({ data: data, textStatus: textStatus, jqXHR: jqXHR, feed: f, entries: e });
                            console.log(new Array(70).join('-'));
                        }

                        if (fun) {
                            return fun.call(this, data['responseData'] ? data.responseData['feed'] ? data.responseData.feed : data.responseData : null);
                        }
                        else {
                            return { data: data, textStatus: textStatus, jqXHR: jqXHR, feed: f, entries: e };
                        }
                    }
                });
            }
        });
        $.jQRSS.props = {
            callback: "?",
            gURL: "http://ajax.googleapis.com/ajax/services/feed/",
            scoring: "h",
            type: "load",
            ver: "1.0"
        };
        $.jQRSS.methods = {
            getObjLength: function(obj) {
                if (typeof obj != "object") return -1;
                var objLength = 0;
                $.each(obj, function(k, v) { objLength++; })
                return objLength;
            }
        };
        $.jQRSS.defaults = {
            count: "10", // max 100, -1 defaults 100
            historical: false,
            output: "json", // json, json_xml, xml
            rss: null,  //  url OR search term like "Official Google Blog"
            userip: null
        };
    }
})(jQuery);

VERWENDEN

//  Param ORDER does not matter, however, you must have a link and a callback function
//  link can be passed as "rss" in options
//  $.jQRSS(linkORsearchString, callbackFunction, { options })

$.jQRSS('someUrl.xml', function(feed) { /* do work */ })

$.jQRSS(function(feed) { /* do work */ }, 'someUrl.xml', { count: 20 })

$.jQRSS('someUrl.xml', function(feed) { /* do work */ }, { count: 20 })

$.jQRSS({ count: 20, rss: 'someLink.xml' }, function(feed) { /* do work */ })

$ .jQRSS ('Hier Wörter anstelle eines Links suchen', Funktion (Feed) {/ * funktioniert * /}) // TODO: Muss korrigiert werden

Optionen

{
    count: // default is 10; max is 100. Setting to -1 defaults to 100
    historical: // default is false; a value of true instructs the system to return any additional historical entries that it might have in its cache. 
    output: // default is "json"; "json_xml" retuns json object with xmlString / "xml" returns the XML as String
    rss: // simply an alternate place to put news feed link or search terms
    userip: // as this uses Google API, I'll simply insert there comment on this:
        /*  Reference: https://developers.google.com/feed/v1/jsondevguide
            This argument supplies the IP address of the end-user on 
            whose behalf the request is being made. Google is less 
            likely to mistake requests for abuse when they include 
            userip. In choosing to utilize this parameter, please be 
            sure that you're in compliance with any local laws, 
            including any laws relating to disclosure of personal 
            information being sent.
        */
}
SpYk3HH
quelle
5
(function(url, callback) {
    jQuery.ajax({
        url: document.location.protocol + '//ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&callback=?&q=' + encodeURIComponent(url),
        dataType: 'json',
        success: function(data) {
            callback(data.responseData.feed);
        }
    });
})('http://news.hitb.org/rss.xml', function(feed){ // Change to desired URL
    var entries = feed.entries, feedList = '';
    for (var i = 0; i < entries.length; i++) {
        feedList +='<li><a href="' + entries[i].link + '">' + entries[i].title + '</a></li>';
    }
    jQuery('.feed > ul').append(feedList);
});


<div class="feed">
        <h4>Hacker News</h4>
        <ul></ul>
</div>
John Magnolia
quelle
5

Ich stimme @Andrew zu . Die Verwendung von Google ist eine solide und wiederverwendbare Methode, um den enormen Vorteil zu erzielen , dass Sie JSON anstelle von XML zurückerhalten. Ein zusätzlicher Vorteil der Verwendung von Google als Proxy besteht darin, dass Dienste, die Ihren direkten Zugriff auf ihre Daten blockieren könnten, Google wahrscheinlich nicht stoppen. Hier ist ein Beispiel mit Skibericht und Zustandsdaten. Dies hat alle gängigen realen Anwendungen: 1) RSS / XML von Drittanbietern 2) JSONP 3) Bereinigen von Zeichenfolgen und Zeichenfolgen in Arrays, wenn Sie die Daten nicht genau so abrufen können, wie Sie es möchten 4) Fügen Sie beim Laden Elemente zum hinzu DOM. Hoffe das hilft einigen Leuten!

<!-- Load RSS Through Google as JSON using jQuery -->
<script type="text/javascript">

    function displaySkiReport (feedResponse) {

    // Get ski report content strings
    var itemString = feedResponse.entries[0].content;
    var publishedDate = feedResponse.entries[0].publishedDate;

    // Clean up strings manually as needed
    itemString = itemString.replace("Primary: N/A", "Early Season Conditions"); 
    publishedDate = publishedDate.substring(0,17);

    // Parse ski report data from string
    var itemsArray = itemString.split("/");


    //Build Unordered List
    var html = '<h2>' + feedResponse.entries[0].title + '</h2>';
    html += '<ul>';

    html += '<li>Skiing Status: ' + itemsArray[0] + '</li>';
    // Last 48 Hours
    html += '<li>' + itemsArray[1] + '</li>';
    // Snow condition
    html += '<li>' + itemsArray[2] + '</li>';
    // Base depth
    html += '<li>' + itemsArray[3] + '</li>';

    html += '<li>Ski Report Date: ' + publishedDate + '</li>';

    html += '</ul>';

    $('body').append(html);    

    }


    function parseRSS(url, callback) {
      $.ajax({
    url: document.location.protocol + '//ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&callback=?&q=' + encodeURIComponent(url),
    dataType: 'json',
    success: function(data) {
      callback(data.responseData.feed);
    }
      });
    }

    $(document).ready(function() {              

        // Ski report
        parseRSS("http://www.onthesnow.com/michigan/boyne-highlands/snow.rss", displaySkiReport);

    });

</script>
Dylan Valade
quelle
2
Dies wird aufgrund domänenübergreifender Probleme nicht funktionieren. Sie benötigen JSONP.
Gotofritz
1
Für mich geht das. Hast du es getestet? Ziemlich sicher, dass Google jsonp mit dem Rückrufparameter ajax dataType zurückgibt.
Dylan Valade
Ich bin mir nicht sicher, wofür die Ablehnung war. Dieser Code funktioniert noch drei Jahre später. Fügen Sie alles in die Konsole ein und Sie sehen die aktuellen (XML) Skibedingungen in der Fußzeile dieser Seite.
Dylan Valade
4

jFeed ist etwas veraltet und funktioniert nur mit älteren Versionen von jQuery. Es ist zwei Jahre her, seit es aktualisiert wurde.

zRSSFeed ist vielleicht etwas weniger flexibel, aber einfach zu bedienen und funktioniert mit der aktuellen Version von jQuery (derzeit 1.4). http://www.zazar.net/developers/zrssfeed/

Hier ist ein kurzes Beispiel aus den zRSSFeed-Dokumenten:

<div id="test"><div>

<script type="text/javascript">
$(document).ready(function () {
  $('#test').rssfeed('http://feeds.reuters.com/reuters/oddlyEnoughNews', {
    limit: 5
  });
});
</script>
Alderete
quelle
Möglicherweise funktioniert dies nur mit nicht lokalen Feeds, da die Google Feed-API verwendet wird (Google muss in der Lage sein, die Feed-XML zu laden).
CmdrTallen
2

Ich rate Ihnen, FeedEk zu verwenden . Nachdem die Google Feed-API offiziell veraltet ist, funktionieren die meisten Plugins nicht mehr. Aber FeedEk funktioniert immer noch. Es ist sehr einfach zu bedienen und bietet viele Optionen zum Anpassen.

$('#divRss').FeedEk({
   FeedUrl:'http://jquery-plugins.net/rss'
});

Mit Optionen

$('#divRss').FeedEk({
  FeedUrl:'http://jquery-plugins.net/rss',
  MaxCount : 5,
  ShowDesc : true,
  ShowPubDate:true,
  DescCharacterLimit:100,
  TitleLinkTarget:'_blank',
  DateFormat: 'MM/DD/YYYY',
  DateFormatLang:'en'
});
jQP
quelle
Ich bin mir nicht sicher, ob Sie tatsächlich einen alternativen API-Endpunkt definieren können, aber wenn Sie könnten, besteht möglicherweise die Möglichkeit, die Google Feed-API durch feedrapp zu ersetzen: github.com/sdepold/feedrapp (das auch das Rückgrat für jquery ist) -rss heutzutage)
sdepold
Dies führt keine Analyse durch. Es verwendet Yahooapis, um das Parsen durchzuführen, und zeigt dann nur den Inhalt an.
David L.
1
<script type="text/javascript" src="./js/jquery/jquery.js"></script>
<script type="text/javascript" src="./js/jFeed/build/dist/jquery.jfeed.pack.js"></script>
<script type="text/javascript">
    function loadFeed(){
        $.getFeed({
            url: 'url=http://sports.espn.go.com/espn/rss/news/',
            success: function(feed) {

                //Title
                $('#result').append('<h2><a href="' + feed.link + '">' + feed.title + '</a>' + '</h2>');

                //Unordered List
                var html = '<ul>';

                $(feed.items).each(function(){
                    var $item = $(this);

                    //trace( $item.attr("link") );
                    html += '<li>' +
                        '<h3><a href ="' + $item.attr("link") + '" target="_new">' +
                        $item.attr("title") + '</a></h3> ' +
                        '<p>' + $item.attr("description") + '</p>' +
                        // '<p>' + $item.attr("c:date") + '</p>' +
                        '</li>';
                });

                html += '</ul>';

                $('#result').append(html);
            }
        });
    }
</script>
Kabuski
quelle
Keine schlechte Antwort, aber leider haben Sie den Code nicht optimal eingefügt. ;-)
Bis zum
0

Verwenden Sie die von Google zwischengespeicherte Google Ajax-API und ein beliebiges Ausgabeformat.

Codebeispiel; http://code.google.com/apis/ajax/playground/#load_feed

<script src="http://www.google.com/jsapi?key=AIzaSyA5m1Nc8ws2BbmPRwKu5gFradvD_hgq6G0" type="text/javascript"></script>
<script type="text/javascript">
/*
*  How to load a feed via the Feeds API.
*/

google.load("feeds", "1");

// Our callback function, for when a feed is loaded.
function feedLoaded(result) {
  if (!result.error) {
    // Grab the container we will put the results into
    var container = document.getElementById("content");
    container.innerHTML = '';

    // Loop through the feeds, putting the titles onto the page.
    // Check out the result object for a list of properties returned in each entry.
    // http://code.google.com/apis/ajaxfeeds/documentation/reference.html#JSON
    for (var i = 0; i < result.feed.entries.length; i++) {
      var entry = result.feed.entries[i];
      var div = document.createElement("div");
      div.appendChild(document.createTextNode(entry.title));
      container.appendChild(div);
    }
  }
}

function OnLoad() {
  // Create a feed instance that will grab Digg's feed.
  var feed = new google.feeds.Feed("http://www.digg.com/rss/index.xml");

  // Calling load sends the request off.  It requires a callback function.
  feed.load(feedLoaded);
}

google.setOnLoadCallback(OnLoad);
</script>
Daniel Magnusson
quelle
Dies ist eine großartige Option, da sie nicht auf jquery beruht!
Pete Gardner
0

zRSSfeed basiert auf jQuery und das einfache Thema ist fantastisch.
Versuche es.

Guruprasad Balaji
quelle
-1

jQuery Feeds ist eine nette Option. Es verfügt über ein integriertes Template-System und verwendet die Google Feed-API, sodass es domänenübergreifende Unterstützung bietet.

Camagu
quelle
-1

Superfeedr hat ein JQuery-Plugin, das das sehr gut macht. Sie haben kein Cross Origin Policy-Problem und die Updates werden in Echtzeit weitergegeben.

Julien Genestoux
quelle
Warum sollte diese Lösung keine CORS-Probleme haben?
Zeichnen
-2

jFeed ist einfach und bietet ein Beispiel zum Testen. Wenn Sie jedoch einen Feed von einem anderen Server analysieren, müssen Sie Cross Origin Resource Sharing (CORS) auf dem Server des Feeds zulassen . Sie müssen auch die Browserunterstützung überprüfen .

Ich habe das Beispiel hochgeladen, aber in keiner Version Unterstützung vom IE erhalten, als ich die URL im Beispiel über das http-Protokoll in example.com/feed.rss geändert habe. CORS sollte für IE 8 und höher unterstützt werden, aber das jFeed-Beispiel hat den Feed nicht gerendert.

Verwenden Sie am besten die Google-API:
https://developers.google.com/feed/v1/devguide

Siehe:
https://github.com/jfhovinne/jFeed
http://en.wikipedia.org/wiki/Cross-origin_resource_sharing
http://en.wikipedia.org/wiki/Same_origin_policy
http://caniuse.com/cors

Rimian
quelle