【问题标题】:How to parse rss from a php page, using jQuery/jFeed?如何使用 jQuery/jFeed 从 php 页面解析 rss?
【发布时间】:2023-03-31 01:23:01
【问题描述】:

我正在尝试使用 jQuery 和 jFeed 合理地解析 rss。

由于same origin policy,我将 BBC 的健康新闻推送到本地页面 (http://www.davidrhysthomas.co.uk/play/proxy.php)。

最初这与 jFeed 下载包中的 proxy.php 脚​​本相同,但由于我的主机禁用了 allow_url_fopen(),我已将 php 修改为以下内容:

$url = "http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/health/rss.xml";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);

echo "$data";
curl_close($ch);

这似乎在我的本地机器上生成了与原始 fopen 相同/可比的内容。

现在这似乎可行,我正在考虑设置 jFeed 脚本以使用该页面,但令我尴尬的是,不知道如何操作。

我知道,至少,这应该可行:

jQuery.getFeed({
   url: 'http://www.davidrhysthomas.co.uk/play/proxy.php',
   success: function(feed) {
      alert(feed.title);
   }
});

...但是,正如我确定您所预料的那样,它不会。有哪些非输出内容可供您阅读:http://www.davidrhysthomas.co.uk/play/exampleTest.html。老实说,我不知道该怎么办。

如果有人可以提供一些指点、提示、提示,或者在紧要关头,快速拍拍脸颊并“振作起来!”将不胜感激...

提前致谢 =)

【问题讨论】:

    标签: php jquery rss jfeed


    【解决方案1】:

    在您的测试页面上,您有一些看起来像错误的脚本行...

    <script type="text/javascript">
    
    jQuery(function() {
    
       url: 'http://www.davidrhysthomas.co.uk/play/proxy.php',
       success: function(feed) {
          alert(feed.title);
       }
    ...
    

    我觉得应该更像……

    <script type="text/javascript">
    
    jQuery(function() {
    
       jQury.ajax( {
           url: 'http://www.davidrhysthomas.co.uk/play/proxy.php',
           success: function(feed) {
               alert(feed.title);
           }
       });
    ...
    

    【讨论】:

    • 这不起作用,但是,从好的方面来说,现在会弹出警告框!那一定是进步……即使我得到的只是“未定义”。不过,首先要 +1,谢谢!
    【解决方案2】:

    Zend 框架有一个类用于使用各种提要。

    它叫做 Zend_Feed

    http://framework.zend.com/manual/en/zend.feed.html

    【讨论】:

    • 遗憾的是,尽管并不奇怪,鉴于 allow_url_fopen() 是不允许的,我似乎无法访问我当前主机上的 Zend 框架。虽然我正在考虑将其下载到我的本地机器以供学习,但除非绝对必要,否则我宁愿不切换主机。不过,谢谢,+1 提供了一个有趣的链接。 =)
    【解决方案3】:

    在您的 PHP 代码中,您错过了 xml 标头:

    $url = "http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/health/rss.xml";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $data = curl_exec($ch);
    header("content-type: text/xml"); 
    echo "$data";
    curl_close($ch);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-18
      • 2011-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多