使用jquery和ajax解析xml
我有一个用于播客的rss提要,基本上我正在尝试用rss提要中的URL填充html5音频播放器 我认为最好的方法是使用ajax解析链接,然后将它们附加到音频播放器的src中。我知道同样的域策略会阻止我使用ajax进行此操作,因此我使用跨域ajax插件(http://bit.ly/Jbi9iX)为了避开这件事 我正在努力弄清楚下面的代码为什么对我不起作用,基本上在这个阶段,我只想将RSS提要中的使用jquery和ajax解析xml,jquery,xml,ajax,rss,Jquery,Xml,Ajax,Rss,我有一个用于播客的rss提要,基本上我正在尝试用rss提要中的URL填充html5音频播放器 我认为最好的方法是使用ajax解析链接,然后将它们附加到音频播放器的src中。我知道同样的域策略会阻止我使用ajax进行此操作,因此我使用跨域ajax插件(http://bit.ly/Jbi9iX)为了避开这件事 我正在努力弄清楚下面的代码为什么对我不起作用,基本上在这个阶段,我只想将RSS提要中的url附加到#results中,以表明它起作用,然后我将它添加到音频播放器的src部分 $(documen
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 />");
});
}
$(文档).ready(函数(){
$.ajax({
网址:'http://theresidency.libsyn.com/rss',
键入:“GET”,
数据类型:“xml”,
成功:parseXml
});
});
函数解析xml(xml){
var item=$(xml.find(“item”);
$(项)。每个(函数(){
$(“#结果”).append($(“附件”).attr(“url”).text()+“
”);
});
}
我在chrome开发工具中没有发现任何错误,我已经查看了其他示例,但我可以找出我做错了什么
以下是xml/rss的一个示例:
以下是我目前上传的内容:
任何帮助都将不胜感激,请提前感谢 您将数据传递到函数的确切位置,我认为您需要执行以下操作:
$(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 />");
});
}
$(文档).ready(函数(){
$.ajax({
网址:'http://theresidency.libsyn.com/rss',
键入:“GET”,
数据类型:“xml”,
成功:功能(数据){
parseXml(数据);
}
});
});
函数解析xml(xml){
var item=$(xml.find(“item”);
$(项)。每个(函数(){
$(“#结果”).append($(“附件”).attr(“url”).text()+“
”);
});
}
或者只是:
$(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 />");
});
});
});
$(文档).ready(函数(){
$.ajax({
网址:'http://theresidency.libsyn.com/rss',
键入:“GET”,
数据类型:“xml”
}).done(函数(xml){
$。每个($(“项”,xml),函数(即,e){
$(“#结果”).append($(“附件”).attr(“url”).text()+“
”);
});
});
});
编辑:
做了更多的修改,并提出:
$(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 />");
});
});
});
$(文档).ready(函数(){
$.ajax({
网址:'http://query.yahooapis.com/v1/public/yql?q=%20SELECT%20*%20来自%20xml%20其中%20url%3D%22http%3A%2F%2FTresidence.libsyn.com%2Frss%22&format=json&callback=',
数据类型:“json”
}).完成(功能(数据){
$.each(data.query.results.rss.channel.item,function()){
$(“#结果”).append(this.enclosure.url+”
);
});
});
});
我相信这正是您想要的,这里有一个结果,解析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 />');
})
}
});
}
$(函数(){
parsers('http://theresidency.libsyn.com/rss');
});
函数解析RSS(url){
$.ajax({
url:document.location.protocol+'//ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&callback=?&q='+encodeURIComponent(url),
数据类型:“json”,
成功:功能(数据){
$.each(data.responseData.feed.entries,function(){
$(“#结果”).append(this.link+”
);
})
}
});
}
谢谢你的回复,伙计,我已经更新了我的最新版本,但它仍然没有将任何内容引入div:,而且我已经尝试了这两种解决方案。您可能根本没有得到任何回复,请尝试将返回的数据记录到控制台,并查找允许源错误,因为如果这个跨域,xml通常不受支持。@Michael-做了一些测试,并用一个应该有效的解决方案编辑了我的答案。我看到这将xml转换为JSON,这是我将要研究的内容,它非常有效,我的朋友,非常感谢!是的,只需像这样访问它:var first=data.query.results.rss.channel.item[0].enclosure.url代码>啊,我不知道,我已经尝试了你的解决方案-但似乎无法让它工作,我构造它错了吗?你所要做的就是直接调用parsers(url):$(函数(){parsers(“);});我仍然无法管理它,尝试过,但我现在得到了一个未知的语法。顺便说一句,我弄乱了以前的评论。新到这个网站。更新了原来的帖子。不用担心,朋友,这已经成功了,我在更新时完全误读了你的评论。谢谢你的帮助,非常感谢!