JQuery不会得到json?

所以我正在尝试完成从谷歌获取json数据的简单任务,但是这一点jquery代码将无法运行。 请你帮我弄明白为什么?

  $(document).ready(function(){ $.getJSON("http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false", function(jsondata) { alert(jsondata.status); }); });  

最佳解决方案:添加“&callback =?” 到url的末尾。 非常感谢你所有的帮助!

它被称为同源政策 。 简而言之:您的代码所在的域是您的javascript可以与之通信的唯一域(默认情况下)

你得到这样的错误:

 XMLHttpRequest cannot load http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false. Origin http://fiddle.jshell.net is not allowed by Access-Control-Allow-Origin. 

是的,这绝对是同源策略的错误。

似乎最新版本的Google Maps API(v3) 不支持jsonp 。 因此,如果您想进行地理编码,则需要使用maps api:

    

其他选择:

  • 正如ctcherry指出的那样 ,使用“代理”服务为您提取数据。
  • 将旧V2 API与JSONP一起使用,但您需要Maps API密钥。

尝试添加&callback =? 到你的URL字符串。 它可能会奏效。

有关详细信息,请参阅此> XmlHttpRequest错误:Access-Control-Allow-Origin不允许使用Origin null

我遇到过同样的问题。 试图从服务器获取json我没有访问权限(=>没有JSONP)。

我发现http://benalman.com/projects/php-simple-proxy/将php代理添加到您的服务器并对此文件执行ajax调用。

 $.ajax({ type: 'GET', url:'proxy.php?url=http://anyDomain.com?someid=thispage', dataType: "json", success: function(data){ // success_fn(data); }, error: function(jqXHR, textStatus, errorThrown) { // error_fn(jqXHR, textStatus, errorThrown); } }); 

其中proxy.php(来自Ben Alman的文件)托管在您的域中


替代方案(我发现它是第二好的): http : //james.padolsey.com/javascript/cross-domain-requests-with-jquery/

确保它不是跨域问题。 我想,为了让jQuery能够调用其他域URL,您需要以某种特殊格式指定URL。 我不记得了,但也许是“?” (问号)附在URL的末尾?