我正在尝试创建一个聚合器,它将从RSS提要中提取项目并将它们存储在jQuery数组中(这样我就可以遍历数组并随机输出)。
我已经找到了一些有关使用jQuery.parseXML
的信息但是这个演示提供了我无法理解,因为我对该领域没有太多的了解,并且演示没有显示RSS链接的任何地方添加饲料?
<p id="someElement"></p>
<p id="anotherElement"></p>
<script>
var xml = "<rss version='2.0'><channel><title>RSS Title</title></channel></rss>",
xmlDoc = $.parseXML( xml ),
$xml = $( xmlDoc ),
$title = $xml.find( "title" );
// Append "RSS Title" to #someElement
$( "#someElement" ).append( $title.text() );
// Change the title to "XML Title"
$title.text( "XML Title" );
// Append "XML Title" to #anotherElement
$( "#anotherElement" ).append( $title.text() );
</script>
我在哪里添加RSS源链接?阵列在哪里制作?
最终,这将是一个马赛克墙,所有项目都以HTML格式输出。
我从每个项目的RSS Feed中获得的数据是:
我需要提取所有这些数据,因此我可以输出标题,描述,将两个包装在链接标记中,然后存储类别并使用存储的发布日期来随机输出(例如选择最近30天,输出这些项目是随机顺序的。)
以下是我使用Ajax页面编写的代码,但我不知道它是否正确或者应该如何工作....
jquery.ajax(http://www.sagittarius-digital.com/news.rss [, dataType xml])
答案 0 :(得分:1)
当你通过数据类型为'xml'的ajax调用rss feed时,你不需要使用$ .parseXml()。
$.ajax({
url:'news.rss',
dataType:'xml',
success:function( xmlString ){
var $xml = $( xmlDoc ),
$title = $xml.find( "title" );
$title.each(function(){
console.log($(this).text());
});
}
});
请记住RSS网址需要与javascript文件所在的域相同。如果没有,那么您需要执行一些服务器端逻辑(例如cURL)来获取RSS源。
答案 1 :(得分:1)
尝试类似
的内容 jQuery(function(){
$.ajax({
url: 'news.rss', //place the your rss feed url here
dataType: 'xml'
}).done(function(xml){
var items = $(xml).find('item').map(function(){
var $item = $(this);
var array = ['<li>'];
array.push('<a href="' + $.trim($item.find('link').text()) + '">')
array.push('<h3>' + $item.find('title').text() + '</h3>')
array.push('</a>');
array.push('<p>' + $item.find('description').text() + '</p>');
array.push('<span class="category">' + $item.find('category').text() + '</span>')
array.push('<span class="pub-date">' + $item.find('pubDate').text() + '</span>')
array.push('</li>');
return array
}).get();
$('ul').append(items.join(' '));
}).fail(function(){
conole.log('error', arguments)
})
})
演示:Plunker