使用jQuery.get()读取RSS提要的问题

时间:2010-03-22 10:35:43

标签: javascript jquery rss

我一直在努力使用jQuery.get()来引入我的动态生成的RSS源,而我只有问题,我的RSS源是错误的格式吗?如果是这样,我可以使用javascript将其转换为正确的格式吗?

这是我的Feed:http://dev.chriscurddesign.co.uk/burns/p/rc_rss.php?rcf_id=0

这是我的代码:

function get_rss_feed() {

        $(".content").empty();

        $.get("http://dev.chriscurddesign.co.uk/burns/p/rc_rss.php?rcf_id=0", function(d) {

            var i = 0;
            $(d).find('item').each(function() {

                var $item = $(this);
                var title = $item.find('title').text();
                var link = $item.find('link').text();
                var location = $item.find('location').text();
                var pubDate = $item.find('pubDate').text();

                var html = '<div class="entry"><a href="' + link + '" target="_blank">' + title + '</a></div>';

                $('.content').append(html);
                i++;
            });

        });
};

任何输入都将不胜感激!! 感谢

3 个答案:

答案 0 :(得分:5)

我在IE中试过这个并且它运行正常。


$(document).ready(function() {
            $.get('http://dev.chriscurddesign.co.uk/burns/p/rc_rss.php?rcf_id=0',
                   'xml' , function(data) {
                alert(data);
            });
        });

由于跨站点脚本问题,这在其他浏览器中不起作用。上述代码仅在其所在的页面位于同一域中时才有效。 所以,你有很多选择,但没有一个是标准的。 最好是从您的域中对URL进行ajax调用,然后从那里调用feed url;从服务器端。 有关更多信息,请参阅 https://stackoverflow.com/search?q=calling+webservice+from+another+domain+using+jquery

答案 1 :(得分:1)

感谢pokrate指出这是一个跨域问题。 为了将来参考,我现在使用php代理来获取rss,然后使用jquery来处理它。

这是代理(你需要在php中打开curl):

<?php
    $session = curl_init($_GET['url']);
    curl_setopt($session, CURLOPT_HEADER, false);
    curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
    $xml = curl_exec($session);
    header("Content-Type: text/xml");appropriately
    echo $xml;
    curl_close($session);
?>

这是我的新javascript:

function get_rss_feed() {

    $(".content").empty();

    var feed = "http://dev.chriscurddesign.co.uk/burns/p/rc_rss.php?rcf_id=0";

    $.get("feedproxy.php?url=" + feed, function(d) {

        $(d).find('item').each(function() {

            var $item = $(this);
            var title = $item.find('title').text();
            var link = $item.find('link').text();

            var html = '<div class="entry"><a href="' + link + '" target="_blank">' + title + '</a></div>';

            $('.content').append(html);
        });

    });
};

我=快乐的兔子:)

答案 2 :(得分:0)

只需使用jFeed,这将使您的代码更加简单。