使用jquery和ajax解析xml

我有一个用于播客的RSS源,基本上我要做的是在RSS源中填充带有URL的html5音频播放器.

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

我正在努力弄清楚为什么下面的代码对我不起作用,基本上在这个阶段我只想将RSS提要中的url追加到#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 dev工具中遇到任何错误,我已经查看了其他示例,但我可以弄清楚我做错了什么.

以下是xml / rss:http://pastebin.com/stuY495c的示例
这是我到目前为止上传的内容:http://bit.ly/J9QHZc

任何帮助将非常感谢,所以提前感谢!

最佳答案
你究竟在哪里将数据传递给函数,我认为你需要这样做:

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

转载注明原文:使用jquery和ajax解析xml - 代码日志