2010-11-10 102 views
1

我試圖從該網站獲得JSON格式的數據獲取JSON格式的數據.. http://www.livetraffic.sg/feeds/json幫助與外部網站

然而,當我使用AJAX ..我碰上我的鉻控制檯此特定錯誤。

錯誤:XMLHttpRequest無法加載。 Access-Control-Allow-Origin不允許Origin null。

外部網站是否阻止我使用信息?

感謝您的幫助!

樣品我的代碼:

url = "http://www.livetraffic.sg/home2/get_erp_gantry"; 
$().ready(function(){ 
     $.get(resturl, function(data) { 
     //do something here with data 
}); 
}); 
+1

您的第一行有url,並在您的AJAX調用中resturl。這只是你問題中的一個錯字嗎? – 2010-11-10 09:11:03

回答

2

這是你的瀏覽器強制執行同源策略。您不允許向您的腳本從中獲取的域以外的域發出請求。

您將不得不在與您的腳本所服務的域相同的域上設置一些服務器端代理,並讓它提供數據。 (您也可以將這些數據緩存在服務器上,如果它有意義的話)。

+0

另請參閱Richard的評論。 Null的確與您的腳本所服務的域不同。這也與錯誤更好地匹配。 :)但是,如果您的網站不是www.livetraffic.sg,您仍然需要按照我描述的方式代理數據。 – cdhowie 2010-11-10 09:13:25

2

您無法進行跨域JSON請求。您的瀏覽器不會允許它。如果目標域允許JSONP請求http://en.wikipedia.org/wiki/JSONP#JSONP,那麼您可以改用此解決方法。否則你不得不提出請求服務器端。

+0

+1! JSONP是要走的路! – jwueller 2010-11-10 09:25:00

0

簡單,你可以執行一個Ajax查詢到包含

header("Content-type: application/json; charset=utf-8"); 
echo file_get_contents('http://www.livetraffic.sg/home2/get_erp_gantry'); 

本地PHP頁面你只是必須有allow_url_fopen真。

+1

這是一個很大的假設,用戶有php服務器端(如果他有*任何*服務器端)。 – RPM1984 2010-11-10 09:18:28

+0

也許,但它是更簡單的方式如果用戶有PHP服務器端^^ – MatTheCat 2010-11-10 09:24:40

0

謝謝大家!使用服務器端PHP腳本管理從外部網站下拉Json數據,然後將變量傳遞給我的javascript :)