2015-07-13 73 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