парсинг xml с использованием jquery и ajax

У меня есть RSS-канал для моего подкаста, и, по сути, я пытаюсь заполнить аудиоплеер html5 URL-адресами внутри RSS-канала.

Я думаю, что лучший способ сделать это - проанализировать ссылки с помощью ajax и затем добавить их в src аудиоплеера. Мне известна та же политика домена, которая помешала бы мне делать это с ajax, поэтому я использую междоменный плагин ajax (http://bit.ly/Jbi9iX), чтобы обойти это.

Я изо всех сил пытаюсь выяснить, почему код ниже не работает для меня, в основном на этом этапе я просто хочу добавитьurl в RSS-канал в#results, чтобы показать, что это работает, тогда я добавлю его вsrc часть аудиоплеера.

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

}
</code>

Я не получаю никаких ошибок в инструментах Chrome Dev, и я посмотрел на другие примеры, но я могу понять, что я делаю неправильно.

Вот пример XML / RSS:http: //pastebin.com/stuY495 А вот что я загрузил:http: //bit.ly/J9QHZ

Любая помощь очень ценится, поэтому заранее спасибо!

Ответы на вопрос(2)

Решение Вопроса

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

Я верю, что это то, что ты ищешь, вот ДЕМОНСТРАЦИЯ

 adeneo14 мая 2012 г., 02:47
yes, просто получи к нему доступ так:var first = data.query.results.rss.channel.item[0].enclosure.url;
 adeneo14 мая 2012 г., 01:16
@ Майкл - провел некоторое тестирование и отредактировал мой ответ с помощью решения, которое должно работать.
 Michael13 мая 2012 г., 23:46
спасибо за ответ чувак, я обновил свою последнюю версию, но она все еще ничего не тянет в div: / и я попробовал оба решения
 adeneo14 мая 2012 г., 00:52
Скорее всего, вы ничего не получите обратно, попробуйте зарегистрировать возвращенные данные на консоли, а также поищите ошибки разрешения источника, поскольку xml обычно не поддерживается, если этот междоменный домен.
 Michael14 мая 2012 г., 02:25
Я вижу, что это конвертирует XML в JSON, что я собирался изучить, и это сработало отлично, мой друг, большое спасибо!

парсинг 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 />');
      })
    }
  });
}
 Kvam14 мая 2012 г., 00:12
Кстати, я испортил предыдущий комментарий. Новое на этом сайте. Вместо этого обновил оригинальный пост.
 Kvam13 мая 2012 г., 23:59
Все, что вам нужно сделать, это вызвать parseRSS (url) напрямую: $ (function () {parseRSS (" Theresidency.libsyn.com / Новости "); });
 Michael14 мая 2012 г., 00:11
Я до сих пор не могу справиться, попробовал Pastebin.com / bhGAXydM но теперь я получаю необработанный синтаксис.
 Michael14 мая 2012 г., 00:16
Не волнуйся, амиго, с этим покончено, я совершенно неправильно прочитал твой комментарий, когда все равно обновился. Спасибо за помощь, очень ценю!
 Michael13 мая 2012 г., 23:56
Я этого не знал, я попробовал ваше решение - Pastebin.com / bhGAXydM но я не могу заставить его работать, я неправильно это понимаю?

Ваш ответ на вопрос