Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jquery和ajax解析xml_Jquery_Xml_Ajax_Rss - Fatal编程技术网

使用jquery和ajax解析xml

使用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

我有一个用于播客的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 />");
  });

}
$(文档).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(“);});我仍然无法管理它,尝试过,但我现在得到了一个未知的语法。顺便说一句,我弄乱了以前的评论。新到这个网站。更新了原来的帖子。不用担心,朋友,这已经成功了,我在更新时完全误读了你的评论。谢谢你的帮助,非常感谢!