Получение Yahoo!Финансирование RSS с помощью JQuery и ошибки Google API - PullRequest
2 голосов
/ 30 декабря 2011

Попытка получить RSS от Yahoo!Финансирование основано на ответах Эндрю и Дилана Валаде в Синтаксический анализ RSS с jQuery , но с ошибкой:

data.responseData имеет значение null

success () data = Object {responseDetails= "Канал не может быть загружен.", ResponseStatus = 400, responseData = null}

Загрузка того же URL-адреса из браузера или PHP cURL возвращает данные RSS в порядке

url: http://feeds.finance.yahoo.com/rss/2.0/headline?s=^FTSE, кодирование URL: http% 3A% 2F% 2Ffeeds.finance.yahoo.com% 2Frss% 2F2.0% 2Fheadline% 3Fs% 3D% 5EFTSE

Тестирование с локального виртуального хоста на моем Mac (OS X 10.5.8, XAMPP 1.7.3).Я попробовал плагин zRSSfeed, который также использует Google API, и получил ту же ошибку: «Не удалось загрузить канал».Индексные данные и график работают нормально

Заранее спасибо


function getRSS(symbol, url, callback) {
    $('#rss').html('http://feeds.finance.yahoo.com/rss/2.0/headline?s='+symbol+'<br />');
    $('#rss').append(encodeURIComponent(url));
    $.ajax({
    url: document.location.protocol + '//ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&callback=?&q=' + encodeURIComponent(url),
    dataType: 'json',
        success:
            function (data) {
                callback(data.responseData.feed);
            },
        error:
            function (jqXHR, textStatus, errorThrown) {
                $('#rss').append('<span class="downVal">'+textStatus+'</span>');
                $('#rss').append('<br />'+'<span class="downVal">'+errorThrown+'</span>');
            }
    });
}

function parseRSS(newsFeed) {
    $('#rss').append(newsFeed);
}

jQuery(document).ready(function($) {   
...
    summary(symbol);
    $('#chart').html('<img style="-webkit-user-select:none" src="http://chart.finance.yahoo.com/z?s='+symbol+'&t=3m&q=l&l=on&z=m&p=m20,m200,v&a=r14,m26-12-9">');
    getRSS(symbol, 'http://feeds.finance.yahoo.com/rss/2.0/headline?s='+symbol, parseRSS);
...

1 Ответ

3 голосов
/ 30 декабря 2011

Первое, на что следует обратить внимание, это то, что фид возвращает код 400 - поэтому в соответствии с рекомендациями W3C не следует повторять вызов .

10.4.1 400 Неверный запрос

Запрос не может быть понят сервером из-за неправильной формы синтаксис. Клиент НЕ ДОЛЖЕН повторять запрос без модификаций.

Когда я открываю URL:

http://feeds.finance.yahoo.com/rss/2.0/headline?s=^FTSE

Я получаю ошибку 404, поэтому, возможно, поиск не всегда действителен или ограничен по скорости?

Если вы уверены, что с вызовом все в порядке, возможно, существует проблема с линией, которая вызывает канал:

$('#rss').html('http://feeds.finance.yahoo.com/rss/2.0/headline?s='+symbol+'<br />'

Так что уберите ее, предупредите переменную символа, чтобы убедиться, что это то, что вам нужно, добавьте строки, подобные приведенным ниже, для некоторой элементарной отладки:

alert (symbol);
var feedUrl = 'http://feeds.finance.yahoo.com/rss/2.0/headline?s='+symbol;
alert (feedUrl);

... и, наконец, проверьте, действительно ли добавление <br /> нарушает URL канала.

...