4

我的播客有一个 RSS 提要,基本上我要做的是在 RSS 提要中使用 URL 填充一个 html5 音频播放器。

我认为解决此问题的最佳方法是使用 ajax 解析链接,然后将它们附加到音频播放器的 src 中。我知道相同的域策略会阻止我使用 ajax 执行此操作,因此我使用跨域 ajax 插件 (http://bit.ly/Jbi9iX) 来解决这个问题。

我正在努力弄清楚为什么下面的代码对我不起作用,基本上在这个阶段我只是想将urlRSS 提要#resultssrc的音频播放器。

$(document).ready(function () {
    $.ajax({
        url: 'http://theresidency.libsyn.com/rss',
        type: 'GET',
        dataType: "xml",
        success: parseXml
    });
});

function parseXml(xml) {
var item = $(xml).find("item");

  $(item).each(function() {
    $("#results").append($("enclosure").attr("url").text() + "<br />");
  });

}

我在 chrome 开发工具中没有收到任何错误,我查看了其他示例,但我可以弄清楚我做错了什么。

这是 xml/rss 的示例: http: //pastebin.com/stuY495c 这是我迄今为止上传的内容:http: //bit.ly/J9QHZc

任何帮助将不胜感激,因此在此先感谢!

4

2 回答 2

6

你究竟在哪里将数据传递给函数,我认为你需要做:

$(document).ready(function () {
    $.ajax({
        url: 'http://theresidency.libsyn.com/rss',
        type: 'GET',
        dataType: "xml",
        success: function(data) {
           parseXml(data);
        }
    });
});

function parseXml(xml) {
var item = $(xml).find("item");

  $(item).each(function() {
    $("#results").append($("enclosure").attr("url").text() + "<br />");
  });

}

要不就:

$(document).ready(function () {
    $.ajax({
        url: 'http://theresidency.libsyn.com/rss',
        type: 'GET',
        dataType: "xml"
    }).done(function(xml) {
        $.each($("item", xml), function(i, e) {
            $("#results").append($("enclosure").attr("url").text() + "<br />");
        });
    });
});

编辑:

对此做了更多的摆弄,并想出了:

$(document).ready(function () {
    $.ajax({
        url: 'http://query.yahooapis.com/v1/public/yql?q=%20SELECT%20*%20FROM%20xml%20WHERE%20url%3D%22http%3A%2F%2Ftheresidency.libsyn.com%2Frss%22&format=json&callback=',
        dataType: "json"
    }).done(function(data) {
        $.each(data.query.results.rss.channel.item, function() {
            $("#results").append(this.enclosure.url + "<br />");
        });
    });
});​

我相信这就是你要找的东西,这里有一个DEMONSTRATION

于 2012-05-13T20:49:52.313 回答
1

事实证明,解析 RSS 比基本的 XML 解析要复杂一些。不过不用担心,google 可以为您完成这项工作并返回一个 json 对象:

$(function() {
   parseRSS('http://theresidency.libsyn.com/rss');
});

function parseRSS(url) {
  $.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) {
      $.each(data.responseData.feed.entries, function() {
        $('#results').append(this.link + '<br />');
      })
    }
  });
}
于 2012-05-13T21:42:34.053 回答