小编典典

使用jquery和ajax解析xml

ajax

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

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

我竭力要弄清楚究竟为什么下面的代码不工作对我来说,基本上在这个阶段,我只是想追加urlRSS提要入内的#results,以表明它的工作,那么我将它添加到src的一部分音频播放器。

$(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

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


阅读 274

收藏
2020-07-26

共1个答案

小编典典

您将数据传递到函数的确切位置,我认为您需要这样做:

$(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 />");
        });
    });
});​

我确实相信这是您想要的,这是一个 演示

2020-07-26