2012-05-14 161 views
3

我使用PHP和JavaScript解析RSS訂閱源。首先,我使用PHP創建了一個代理來獲取RSS提要。然後使用JavaScript從此RSS源獲取個人數據。我與JavaScript的問題。如果我沒有錯誤地使用console.log(rssData);,我可以獲得整個JavaScript文檔。如果我嘗試獲取本文檔中的單個元素,例如:<title><description><pubDate>使用rssData.getElementsByName("title");它會給出錯誤「Uncaught TypeError:Object .... has no method'getElementsByName'」。所以我的問題是如何獲得RSS源中的元素?使用javascript解析rss訂閱源

使用Javascript(更新)

function httpGet(theUrl) { 
    var xmlHttp = null; 

    xmlHttp = new XMLHttpRequest(); 
    xmlHttp.open("GET", theUrl, false); 
    xmlHttp.send(null); 
    return xmlHttp.responseXML; 
} 

// rss source 
var rssData = httpGet('http://website.com/rss.php'); 

// rss values 
var allTitles = rssData.getElementsByTagName("title"); // title 
var allDate = rssData.getElementsByTagName("pubDate"); // date 
+0

'xmlHttp.responseText'是一個'String'。 'String's沒有'getElementsByName()'函數。你期待XML響應嗎?請改用'xmlHttp.responseXML'。此外,您可能會遇到跨域問題與JS做這個。您可能希望通過對您自己的應用程序的AJAX請求獲取PHP端的提要。 –

+0

@Cory感謝您的回覆,是的'xmlHttp.responseXML'正是我一直在尋找的。我還將來源策略標題添加到所有訪問。 –

回答

3

試着改變httpGet函數的最後一行:

return xmlHttp.responseXML; 

畢竟,你期待一個XML響應返回。您可能還需要將此行添加到您的PHP代理中:

header("Content-type: text/xml"); 

強制將返回內容作爲XML發送。

+0

'return xmlHttp.responseXML;'正是我需要的,謝謝。 –

+0

你能幫我多做一件事嗎?我想遍歷所有的日期,只返回匹配當前日期的標題。我更新了我的帖子。 –

+0

這完全是另一個問題。 –