Проблемы с чтением RSS-канала с помощью jQuery.get () - PullRequest
3 голосов
/ 22 марта 2010

Я дергал себя за волосы, пытаясь использовать jQuery.get () для извлечения моего динамически генерируемого канала RSS, и у меня не было ничего, кроме проблем, является ли мой канал RSS неправильным форматом? Если да, могу ли я преобразовать его в правильный формат, используя JavaScript?

Вот мой канал: 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 ]

5 голосов
/ 22 марта 2010

Я попробовал это в IE, и все заработало нормально.


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

Это не будет работать в других браузерах из-за проблем межсайтового скриптинга. Приведенный выше код будет работать только в том случае, если страница, на которой он находится, находится в том же домене. Итак, у вас есть много вариантов, ни один из которых не является стандартным. Лучше всего сделать ajax-вызов URL-адреса из вашего домена, а затем вызвать URL-адрес канала оттуда, т.е. со стороны сервера. Для больше см. Это https://stackoverflow.com/search?q=calling+webservice+from+another+domain+using+jquery

1 голос
/ 22 марта 2010

Спасибо pokrate за то, что он указал, что это была междоменная проблема.Для дальнейшего использования я использую php-прокси, чтобы получить rss, а затем jquery для его обработки.

Вот прокси (вам нужно включить curl в php):

<?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);
        });

    });
};

Me = Happy Bunny:)

0 голосов
/ 22 марта 2010

Просто используйте jFeed , это сделает ваш код намного проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...