2011-12-29 55 views
2

試圖從Yahoo!獲取RSS財政部根據安德魯和Dylan瓦拉德答案在Parse RSS with jQuery但收到的錯誤:獲取Yahoo!使用JQuery和Google API的財務RSS錯誤

data.responseData是空

成功() 數據= {對象= responseDetails「飼料無法加載。」,responseStatus = 400,responseData = NULL}

載入來自瀏覽器的相同的URL或PHP捲曲返回OK RSS數據

網址:http://feeds.finance.yahoo.com/rss/2.0/headline?s= ^富時, 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)進行測試。我嘗試了使用Google API的zRSSfeed插件,並收到了同樣的錯誤:「Feed無法加載」。索引數據和圖表預先


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); 
... 

回答

3

首先要指出工作正常

由於是,進料返回一個400碼 - 從而根據W3C recommendations, you shouldn't repeat the call

10.4.1 400 Bad Request

The request could not be understood by the server due to malformed syntax. The client SHOULD NOT repeat the request without modifications.

當我打開網址:

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

我得到一個404錯誤,所以也許搜索不總是有效的或者是速率限制?

如果你確信該呼叫是OK,那麼有可能是與調用進行了一個問題:

$('#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 />實際上是打破了飼料網址。

+0

感謝您的建議,它幫助我找到了問題。區域和語言url參數是必需的,但我認爲它們是可選的,因爲我對文檔感到困惑:「那麼您可以使用語言/區域本地化提要結果」。此外,你必須編碼「^」字符,指出它是一個指數,而不是股票;我在我的代碼中完成了,但在帖子中省略了該行。所以,正確的網址是:http://feeds.finance.yahoo.com/rss/2.0/headline?s=%5EFTSE®ion=US&lang=en-US – hsands 2011-12-30 01:47:15

相關問題