改变了我有加载RSS新闻http://www.tagesschau.de/xml/rss2检查跨域RSS已经使用Ajax
我要检查每60秒如果RSS源已更新网站。如果它已经改变,它应该重新加载RSS提要。使用Ajax我认为这将工作的伟大,但我在这里坚持:(。我评论的success
事件console.log
,看看阿贾克斯将触发success
或error
事件这引发了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: 4
和statusText: "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_REFERER
和SERVER_NAME
成东西?
现在发生的事情是success
事件被触发 - 是! - 但其日志的结果只包含" "
。
似乎你正在加载一个插件文件。那个插件是否支持你在做什么? – charlietfl
AJAX Cross Origin是一个允许Cross Origin AJAX请求的jQuery插件。此插件使用两种跨域AJAX请求方法的组合: 1.使用JSONP(JSON填充) 2.设置代理 – Joep
但它可能使用它自己的ajax方法而不是调用'$ .ajax'。提供文档链接。如果是我认为它使用YQL作为代理 – charlietfl