【问题标题】:process RSS feeds with AJAX and javascript only仅使用 AJAX 和 javascript 处理 RSS 提要
【发布时间】:2010-01-28 13:08:04
【问题描述】:

是否可以连接到 RSS 提要,检索 XML 对象,然后在客户端 javascript/AJAX 中对其进行解析和显示?

谢谢,

【问题讨论】:

  • 是否有一个特定的原因为什么它必须是客户端?一段Javascript可以很容易地调用服务器上的脚本来完成这项工作,然后将结果传回给这段Javascript。
  • 我更喜欢在客户端进行调试而不部署到服务器

标签: javascript xml ajax rss feed


【解决方案1】:

Same Origin Policy为准,是的。 http://www.xml.com/lpt/a/1672 有一个例子(虽然,坦率地说,代码不是很好,你开始在第一个函数中使用全局变量)。

【讨论】:

  • 所以这只能有效地使用同一域上的提要?
  • 在标准安全环境中——是的。当然,您可以通过自己的服务器代理事物。
  • @Dhaivat — 问题没有提到 Phonegap。你是不是把这个问题和the entirely separate one that you asked混淆了?!
  • 真的很抱歉,我一直在评论错误的问题中的错误答案。
【解决方案2】:

技术上是可行的。

但是,浏览器端存在一些限制:AJAX 请求 (XHR / XmlHttpRequest) 只能在托管您的 javascript 脚本的同一域上完成。

这意味着托管在 http://example.com/ 上的脚本无法在 http://domain.com/ 上执行 XHR。

您可以通过使用代理脚本服务器端绕过这个限制。例如:http://example.com/getFeed.php?feed=the_complete_url_of_the_targeted_feed

【讨论】:

    【解决方案3】:

    是的,当然可以。一个真实世界的例子如下:

    <div id='tagged'></div>
    
    <script type="text/javascript">
    
     $.get('http://stackoverflow.com/feeds/user/40986', function(data){
         $(data).find('entry').each(function(){
             var $rssLink = $('<a></a>')
                 .attr('href', $(this).find('link').attr('href'))
                 .append($(this).find('id').text());
             var $divContainer = $('<div></div>');
             $rssLink.appendTo($divContainer);
             $divContainer.appendTo('#tagged');
         });
     });
    
    </script>
    

    使用 jQuery,我获得了自己的 StackOverflow RSS 提要并打印出每个条目的链接。

    【讨论】:

    • 我想要更多的解释,考虑到其他人说这是不可能的,因为 XHR 规则。我刚才将你的代码复制/粘贴到一个测试站点上,更改了 URL,但没有得到结果。
    猜你喜欢
    • 1970-01-01
    • 2016-01-17
    • 1970-01-01
    • 2011-06-08
    • 2014-08-08
    • 1970-01-01
    • 2011-02-11
    • 2010-10-08
    • 2012-06-12
    相关资源
    最近更新 更多