Анализируйте RSS с помощью jQuery

Я хочу использовать jQuery для анализа RSS-каналов. Можно ли это сделать с помощью базовой библиотеки jQuery из коробки или мне нужно будет использовать плагин?

Для всех, кто попал сюда из Google, мне пришлось создать аналогичную вещь для программы просмотра эскизов на сайте deviantART. Красиво, просто и легко расширяется: adamjamesnaylor.com/2012/11/05/…. Обратите внимание, что он использует программу чтения каналов Google, но только для преобразования ее в JSON.

Adam Naylor 06.11.2012 17:13

Я бы выбрал github.com/sdepold/jquery-rss - это лучший вариант прямо сейчас, доступно несколько вариантов! :)

Komrath 13.02.2012 15:23
github.com/sdepold/jquery-rss
Blazemonger 06.05.2015 21:15
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
195
3
220 552
20
Перейти к ответу Данный вопрос помечен как решенный

Ответы 20

Используйте jFeed - плагин jQuery RSS / Atom. Согласно документации, это очень просто:

jQuery.getFeed({
   url: 'rss.xml',
   success: function(feed) {
      alert(feed.title);
   }
});

какие-нибудь примеры использования в реальном мире? т.е. синтаксический анализ и отображение, а не оповещение. или это так просто, как $ ("# results"). append (feed.title)

Andy Brudtkuhl 22.10.2008 21:03

ПРИМЕЧАНИЕ: в загрузке есть множество отличных примеров.

Andy Brudtkuhl 22.10.2008 21:06

хороший ответ, но я не могу скачать этот плагин, как я могу его скачать, потому что формат tar.gz не поддерживается моим WinRAR

Anirudha Gupta 07.11.2009 02:01

Анирудха, может, попробуете 7-zip? Он бесплатный, с открытым исходным кодом и открывает файлы различных типов, включая tar / gzip.

Nathan Strutz 09.11.2009 18:30

Обратите внимание, что последняя версия этого плагина доступна на Github.

Alan H. 27.05.2011 10:08

Похоже, что jFeed больше не поддерживается активно (последнее изменение было сделано 2 года назад, и многие открытые запросы на вытягивание, похоже, игнорируются) и не работает с последними выпусками jQuery.

Thilo 05.02.2013 13:48

Это на GitHub. Почему бы не разветвить и не обновить вместо того, чтобы жаловаться на это? Может быть, напишите автору и узнайте, что случилось.

Nathan Strutz 05.02.2013 21:13

Пару лет назад я использовал jFeed, и у меня был большой опыт работы с ним.

siliconrockstar 12.12.2013 20:34

Используйте Google AJAX Feed API, если ваши данные RSS не являются конфиденциальными. Конечно, быстро.

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

Хорошая идея, но не работает, когда вы находитесь внутри брандмауэра, который требует проверки подлинности прокси-сервера с использованием диалогового окна.

thewinchester 18.06.2010 08:53

канал Google устарел и больше не поддерживается.

vikas etagi 29.12.2017 10:31

Использование 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>
<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>

Неплохой ответ, но, к сожалению, вы не очень хорошо справились с вставкой кода. ;-)

Till 02.09.2010 16:12

Я использую jquery с yql для подачи. Вы можете получить twitter, rss, buzz с помощью yql. Читал из http://tutorialzine.com/2010/02/feed-widget-jquery-css-yql/. Для меня это очень полезно.

jFeed несколько устарел, работает только со старыми версиями jQuery. Прошло два года с момента его обновления.

zRSSFeed, возможно, немного менее гибкий, но он прост в использовании и работает с текущей версией jQuery (в настоящее время 1.4). http://www.zazar.net/developers/zrssfeed/

Вот краткий пример из документации zRSSFeed:

<div id = "test"><div>

<script type = "text/javascript">
$(document).ready(function () {
  $('#test').rssfeed('http://feeds.reuters.com/reuters/oddlyEnoughNews', {
    limit: 5
  });
});
</script>

Обратите внимание, что это работает только с нелокальными фидами, поскольку он использует Google Feed API (Google должен иметь возможность загружать фид xml).

CmdrTallen 18.03.2011 18:19

jFeed не работает в IE.

Используйте zRSSFeed. Если бы он работал через 5 минут

Доступно на zazar.net/developers/zrssfeed Собираюсь попробовать это сам, чтобы увидеть, как оно пойдет, выглядит многообещающим.

thewinchester 18.06.2010 08:53

Кстати, zRssFeed внутренне использует Google Feed RSS API. Так что, если кто-то хочет создать сам HTML-макет, проще просто взглянуть на него напрямую.

Ciantic 24.04.2011 14:14

супер круто ... единственное, что если бы они предоставляли объекты фида, а не весь html в функции обратного вызова, это было бы здорово ...

shahil 01.01.2014 09:46

К вашему сведению, всем, кто хочет использовать этот плагин. Разработчик разместил следующее. «ЭТОТ ПЛАГИН ПРЕКРАЩЕН. В связи с удалением Google Feeds API из службы, на что ответил плагин, он больше не будет доступен или поддерживаться». Источник: zazar.net/developers/jquery/zrssfeed

phanf 02.12.2015 19:33
Ответ принят как подходящий

ПРЕДУПРЕЖДЕНИЕ

The Google Feed API is officially deprecated and doesn't work anymore!


Нет необходимости в плагине целиком. Это вернет ваш RSS как объект JSON в функцию обратного вызова:

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);
    }
  });
}

Пробовал jFeed, и это не сработало, это отлично работает и не требует дополнительной библиотеки.

diggersworld 06.08.2011 00:49

Меня интересует отсутствующий ключ API, который Google запрашивает во всех своих запросах.

Xeoncross 07.08.2011 23:13

имейте в виду ... используя API Google, каналы кэшируются, поэтому вы не будете получать самые последние и самые лучшие каналы.

c0deNinja 21.09.2011 21:17

где это кешируется? как я могу удалить кеш?

Jeg Bagus 27.09.2011 07:39

какое значение должно быть передано в url

user1432124 11.07.2012 13:33

@JegBagus У меня была такая же проблема, и я опубликовал свое решение ниже

DigitalDesignDj 10.05.2013 02:54

Это не лучший ответ. Это зависит от сторонней компании [Google], поддерживающей их обслуживание. Он не отвечает на исходный вопрос («Разобрать RSS с помощью jQuery»), а вместо этого рекламирует Google. Что, если Google откажется от своего ajax API или изменит его? Ваш сайт ломается.

Charles Goodwin 19.06.2013 15:01

Как применить google.feeds.Feed.MIXED_FORMAT к этому примеру кода?

klewis 16.08.2013 15:45

@CharlesGoodwin, да, это решение зависит от сторонней службы и поэтому не идеально, но если вы попадаете на междоменный URL-адрес, вам понадобится какая-то размещенная служба. Согласно ToS Google (developers.google.com/feed/terms), этот API будет доступен до апреля 2015 года. У Yahoo также есть служба (см. github.com/AIRSHP/Feed-To-JSON/blob/master/jquery.feedToJSON‌ .js), и на github есть множество проектов преобразования XML в JSON, если вы хотите разместить свой собственный.

Andrew Childs 27.01.2014 01:14

«решение зависит от службы, размещенной на стороннем сервере, и поэтому не является идеальным»: что ж, пожалуйста, рассматривайте всю всемирную паутину как ориентированную на стороннюю организацию архитектуру. Кстати, если вам нужно получить сочетание RSS-каналов, упорядоченный по дате элемента, и если вы не боитесь (исторической) третьей стороны: pipe.yahoo.com/pipes - отличное решение, выводящее JSON / XML.

Ronan 14.05.2014 11:51

@CharlesGoodwin Google только что удалил этот API! developers.google.com/feed/?hl=en

GôTô 02.12.2015 13:50

Если кто-то заинтересован в замене прежнего Google Feed API, вы можете найти его здесь: github.com/sdepold/feedrapp

sdepold 15.10.2019 09:59

Для тех из нас, кто приходит к обсуждению поздно, начиная с версии 1.5 jQuery имеет встроенные возможности синтаксического анализа XML, что позволяет довольно легко сделать это без плагинов или сторонних сервисов. Он имеет функцию parseXml, а также автоматически анализирует xml при использовании функции $ .get. Например.:

$.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...
    });
});

Ошибка XmlHttpRequest: источник не разрешен Access-Control-Allow-Origin

jackocnr 30.08.2012 23:05

@jackocnr, да, это оборотная сторона этого метода. Вы не можете выполнять междоменные запросы, если у вас нет доступа для установки заголовка Access-Control-Allow-Origin на исходном сервере. Если сервер поддерживает jsonp, то это ваш лучший выбор. В противном случае вы можете использовать прокси-скрипт в своем домене для получения xml и затем вызвать этот скрипт вместо внешнего сервера.

David Hammond 31.08.2012 00:46

Это действительно единственный ответ, который не зависит от внешних плагинов или сервисов?

Blazemonger 18.03.2014 00:50

Почему $this.find("link").text() всегда возвращает пустую строку ''?

Jeff Tian 03.10.2014 15:56

@JeffTian, ​​сложно сказать, не увидев ваш xml. Наиболее очевидной причиной может быть то, что элемент <link> отсутствует или пуст.

David Hammond 03.10.2014 20:37

@DavidHammond, спасибо за ответ. Я выяснил причину, по которой возвращенные данные содержат некоторые ведущие невидимые пробелы, используя $ .parseXML (data). Итак, я решил проблему с помощью $xml = $($.parseXML(data.trim()));, и тогда я смог получить ссылку, как и ожидалось.

Jeff Tian 04.10.2014 08:21

Я согласен с @Andrew, использование Google - надежный, многоразовый способ сделать это с огромным преимуществом, заключающимся в том, что вы получаете обратно JSON вместо XML. Дополнительным преимуществом использования Google в качестве прокси-сервера является то, что службы, которые могут заблокировать ваш прямой доступ к своим данным, вряд ли остановят Google. Вот пример использования отчета о лыжах и данных условий. У него есть все обычные приложения реального мира: 1) Сторонний RSS / XML 2) JSONP 3) Очистка строк и строк в массив, когда вы не можете получить данные именно так, как вы хотите 4) при загрузке добавляйте элементы в ДОМ. Надеюсь, это поможет некоторым людям!

<!-- 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>

Это не сработает из-за проблем с несколькими доменами. Вам нужен JSONP.

gotofritz 30.08.2012 03:47

Меня устраивает. Вы это тестировали? Почти уверен, что Google возвращает jsonp, используя параметр обратного вызова, а не ajax dataType.

Dylan Valade 05.09.2012 05:26

Не уверен, за что был проголосован против. Этот код все еще работает три года спустя. Вставьте все это в консоль, и вы увидите текущие (XML) условия катания на лыжах, добавленные в нижний колонтитул этой страницы.

Dylan Valade 06.05.2016 17:19

zRSSfeed построен на jQuery, и простая тема потрясающая. Попробуйте.

Update (Oct 15, 2019)

Я извлек базовую логику из jquery-rss в новую библиотеку под названием Ванильный RSS, которая использует API выборки и может работать без каких-либо дополнительных зависимостей:

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.info('Everything is loaded and rendered');
});

Original

Почта:

Вы также можете использовать jquery-rss, который поставляется с красивыми шаблонами и очень прост в использовании:

$("#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>'
})

урожайность (по состоянию на 18 сентября 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>

См. Рабочий пример http://jsfiddle.net/sdepold/ozq2dn9e/1/.

Имейте в виду, что jquery-rss использует API Google Feed, который кэширует канал, что может представлять проблему. Вы можете обмануть его, добавив параметр нежелательной ссылки: stackoverflow.com/questions/13401936/…

kukabuka 02.05.2015 03:36

предоставьте пример форматирования даты без использования moment.js

Purvesh Desai 19.11.2015 07:09

Проверьте следующий фрагмент gist.github.com/sdepold/d1e5e0e7a66fc77930fe. Он будет генерировать что-то вроде этого: «<some content>, [@ 2015-11-18]»

sdepold 20.11.2015 08:29

Просто хотел упомянуть, что jquery-rss НЕ использует API Google Feed, а заменяет его под названием Feedr (github.com/sdepold/feedrapp) и, соответственно, отлично работает, несмотря на то, что исходный API отключен.

sdepold 15.10.2019 10:00
(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>

jFeed прост и имеет пример, который вы можете проверить. Но если вы анализируете канал с другого сервера, вам необходимо разрешить Совместное использование ресурсов между источниками (CORS) на сервере канала. Вам также понадобится проверьте поддержку браузера.

Я загрузил пример, но все еще не получил поддержки со стороны IE ни в одной версии, когда я изменил URL-адрес в примере на что-то вроде example.com/feed.rss через протокол http. CORS должен поддерживаться в IE 8 и выше, но в примере jFeed канал не отображался.

Лучше всего использовать API Google:
https://developers.google.com/feed/v1/devguide

См .:
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

Каналы jQuery - хороший вариант, он имеет встроенную систему шаблонов и использует Google Feed API, поэтому имеет междоменную поддержку.

Используйте google ajax api, кэшированный Google и любой формат вывода, который вы хотите.

Образец кода; 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>

это отличный вариант, потому что он не полагается на jquery!

Pete Gardner 11.11.2013 21:42

UPDATE [4/25/2016] Now better written and fully supported version with more options and abilities hosted at GitHub.jQRSS

Я видел Выбрано Ответ от Натан Струтц, однако ссылка на страницу плагина jQuery все еще не работает, и домашняя страница для этого сайта, похоже, не загружается. Я попробовал несколько других решений и обнаружил, что большинство из них не только устаревшие, но и ЛЕГКИЙ! Таким образом, я бросил шляпу и сделал свой собственный плагин, и с мертвыми ссылками здесь, это похоже на отличное место для отправки ответа. Если вы ищете этот ответ в 2012 году (скоро до 2013 года), вы можете заметить разочарование мертвыми ссылками и старыми советами здесь, как это сделал я. Ниже приведена ссылка на мой пример плагина современное, а также код этого плагина! Просто скопируйте код в файл JS и свяжите его в заголовке, как любой другой плагин. Использование ЧРЕЗВЫЧАЙНО EZ!

jsFiddle

Plugin Code
2/9/2015 - made long overdue update to check for console before sending commands to it! Should help with older IE issues.

(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.info(new Array(30).join('-'), "REQUESTING RSS XML", new Array(30).join('-')); console.info({ ajaxData: ajaxData, ajaxRequest: settings.url, jqXHR: jqXHR, settings: settings, options: o }); console.info(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.info(new Array(30).join('-'), "SUCCESS", new Array(30).join('-'));
                            console.info({ data: data, textStatus: textStatus, jqXHR: jqXHR, feed: f, entries: e });
                            console.info(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);

USE

//  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 ('Искать слова здесь вместо ссылки', функция (канал) {/ * работает * /}) // TODO: требует исправления

Options

{
    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.
        */
}

Проект jQuery-rss довольно легкий и не требует особого стиля.

Синтаксис может быть таким простым, как

$("#rss-feeds").rss("http://www.recruiter.com/feed/career.xml")

См. рабочий пример на http://jsfiddle.net/jhfrench/AFHfn/

Суперфидр имеет плагин jquery, который делает это очень хорошо. У вас не будет проблем с политикой Cross Origin, и обновления будут распространяться в реальном времени.

Почему бы в этом решении не было проблем с CORS?

drewish 01.05.2016 02:36

Советую использовать FeedEk. После того, как Google Feed API официально устарел, большинство плагинов перестали работать. Но FeedEk все еще работает. Он очень прост в использовании и имеет множество опций, которые можно настроить.

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

С опциями

$('#divRss').FeedEk({
  FeedUrl:'http://jquery-plugins.net/rss',
  MaxCount : 5,
  ShowDesc : true,
  ShowPubDate:true,
  DescCharacterLimit:100,
  TitleLinkTarget:'_blank',
  DateFormat: 'MM/DD/YYYY',
  DateFormatLang:'en'
});

Я не уверен, что вы действительно можете определить альтернативную конечную точку api, но если бы вы могли, потенциально была бы возможность заменить api фида Google на feedrapp: github.com/sdepold/feedrapp (который также является основой для jquery-rss в настоящее время)

sdepold 15.12.2015 09:29

Это не выполняет синтаксический анализ. Он использует yahooapis для синтаксического анализа, а затем просто отображает контент.

David L. 03.01.2016 23:57

Другие вопросы по теме