Парсинг xml с использованием jquery и ajax
У меня есть RSS-канал для моего подкаста, и, по сути, я пытаюсь заполнить аудиоплеер html5 URL-адресами внутри RSS-канала.
Я считаю, что лучший способ сделать это - проанализировать ссылки с помощью ajax и затем добавить их в src аудиоплеера. Мне известна та же политика домена, которая помешала бы мне делать это с ajax, поэтому я использую междоменный плагин ajax (http://bit.ly/Jbi9iX), чтобы обойти это.
Я изо всех сил пытаюсь выяснить, почему приведенный ниже код не работает для меня, в основном на этом этапе я просто хочу добавить url
в RSS-канал в #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
Любая помощь будет высоко ценится, поэтому заранее спасибо!
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 />");
});
});
});
Я верю, что это то, что вы ищете, вот ДЕМОНСТРАЦИЯ
Оказывается, парсинг 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 />');
})
}
});
}