2015-07-13 68 views
2

改變了我有加載RSS新聞http://www.tagesschau.de/xml/rss2檢查跨域RSS已經使用Ajax

我要檢查每60秒如果RSS源已更新網站。如果它已經改變,它應該重新加載RSS提要。使用Ajax我認爲這將工作的偉大,但我在這裏堅持:(。我評論的success事件console.log,看看阿賈克斯將觸發successerror事件這引發了error事件)

<script type="text/javascript" src="../js/jquery.ajax-cross-origin.min.js"></script> 
<script type="text/javascript"> 
function checkRSS() { 
$.ajax({ 
    crossOrigin: true, 
    type: 'GET', 
    proxy: "../php/proxy.php", 
    url: "http://www.tagesschau.de/xml/rss2", 
    dataType: "xml", 
    success: function (xml) { 
    //console.log(xml); 
    }, 
    error: function(xml) { 
    console.log(xml); 
    } 
}); 
} 
setInterval("checkRSS()", 60000); 
</script> 

在控制檯中,我得到status: 200,readyState: 4statusText: "success"

有誰知道爲什麼error事件被觸發?我通過http://jsonlint.com檢查了網址。它會加載列表但給我一個錯誤。這是問題嗎?

Ajax的跨源插件:http://www.ajax-cross-origin.com/how.html#js-what-is-this-plugin

EDIT

我添加從Ajax-Cross-Origin plugin代理PHP文件(和加入其中的Ajax代碼以上鍊接):

<?php 
$url = (isset($_GET['url'])) ? $_GET['url'] : false; 
if(!$url) exit; 

$referer = (isset($_SERVER['HTTP_REFERER'])) ? strtolower($_SERVER['HTTP_REFERER']) : false; 
$is_allowed = $referer && strpos($referer, strtolower($_SERVER['SERVER_NAME'])) !== false; 

$string = ($is_allowed) ? utf8_encode(file_get_contents($url)) : 'You are not allowed to use this proxy!'; 
$json = json_encode($string); 
$callback = (isset($_GET['callback'])) ? $_GET['callback'] : false; 
if($callback){ 
    $jsonp = "$callback($json)"; 
    header('Content-Type: application/javascript'); 
    echo $jsonp; 
    exit; 
} 
echo $json; 
?> 

也許一個愚蠢的問題,但我應該改變HTTP_REFERERSERVER_NAME成東西?

現在發生的事情是success事件被觸發 - 是! - 但其日誌的結果只包含" "

+0

似乎你正在加載一個插件文件。那個插件是否支持你在做什麼? – charlietfl

+0

AJAX Cross Origin是一個允許Cross Origin AJAX請求的jQuery插件。此插件使用兩種跨域AJAX請求方法的組合: 1.使用JSONP(JSON填充) 2.設置代理 – Joep

+0

但它可能使用它自己的ajax方法而不是調用'$ .ajax'。提供文檔鏈接。如果是我認爲它使用YQL作爲代理 – charlietfl

回答

0

跨網站腳本政策將使這個棘手...您最好的選擇可能是使用第三方API,如Superfeedr或Google Feed API。 這樣做的好處是他們他們將處理您的負載,並且仍然能夠很快地從原始提要中檢索更新。

+0

謝謝,我會研究它,但首先我會自己嘗試,直到我把所有的頭髮都拉出來。這就像製作自己多汁的漢堡包,然後有人說, 「在拐角處有一個很好的漢堡包......」;-) – Joep

+0

同意:)總是很好有一個自己的想法,你可以最終看到「卸載」這個好處! –

+0

你能解釋一下你的網站Superfeedr嗎?因爲我什麼都不懂...... – Joep