2010-11-10 97 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 :)