改變了我有加載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