用JavaScript访问googlemapsapi 变量url=”https://maps.googleapis.com/maps/api/place/search/json?key=AIzaSyBnEjp_CRcL_APx4mMsmuke9SV1PWZfnww&sensor=false&location=26.526437,-80.163004&radius=500&keyword=Physican%27s+体重+损耗+中心和类型=“; getJSON(url、函数(数据){ 警报(数据); });

用JavaScript访问googlemapsapi 变量url=”https://maps.googleapis.com/maps/api/place/search/json?key=AIzaSyBnEjp_CRcL_APx4mMsmuke9SV1PWZfnww&sensor=false&location=26.526437,-80.163004&radius=500&keyword=Physican%27s+体重+损耗+中心和类型=“; getJSON(url、函数(数据){ 警报(数据); });,javascript,jquery,google-maps,Javascript,Jquery,Google Maps,运行上述代码时,我没有得到警报窗口。URL没有任何回调函数。任何关于如何使用jQuery或Javascript从JSON URL解析/检索数据的帮助或有用链接都将不胜感激。谷歌为该请求返回的标题不允许跨域查询 <!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery-latest.js"></script> </head> <b

运行上述代码时,我没有得到警报窗口。URL没有任何回调函数。任何关于如何使用jQuery或Javascript从JSON URL解析/检索数据的帮助或有用链接都将不胜感激。

谷歌为该请求返回的标题不允许跨域查询

<!DOCTYPE html>
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<script type="text/javascript">
    var url = "https://maps.googleapis.com/maps/api/place/search/json?key=AIzaSyBnEjp_CRcL_APx4mMsmuke9SV1PWZfnww&sensor=false&location=26.526437,-80.163004&radius=500&keyword=Physican%27s+Weight+Loss+Centers&types=";
    jQuery.getJSON(url, function (data) {
        alert(data);
    });

</script>
</body>
</html>
因此,您实际上需要做的是让服务器中的一些代码获取数据,然后传递数据,这样您就不会违反跨域规则


或者看看谷歌是否提供了JSONP版本的API。

请参阅Paul Tregong的文章,了解正在发生的事情以及如何从总体上规避


然而,在本例中,实际上有一个适用于谷歌地图(包括您似乎正在使用的地点)的JavaScript API。您可以查看。

我假设这是跨域的。在这种情况下,以下jQuery应该可以工作:

HTTP/1.1 200 OK
status: 200 OK
version: HTTP/1.1
cache-control: private
content-encoding: gzip
content-length: 1932
content-type: application/json; charset=UTF-8
date: Mon, 24 Sep 2012 12:27:10 GMT
server: mafe
vary: Accept-Language
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
注意:jQuery不会让您在跨域请求上访问http状态码,它只会在200响应上激发.success(),在非200响应上激发.fail()-例如,您将很难处理404和403客户端。如果你想有更好的控制,可以考虑使用jQuery jSOP之类的东西。 另外值得注意的是:使用浏览器调试器(firebug/随便什么),这至少应该告诉您ajax请求返回了什么响应-很可能您的请求得到了非200-这对于jQuery来说是一个失败案例。在这种情况下,你的能力有点有限


一些背景阅读:

这可能是一个跨域问题,除非您恰好在同一个域(maps.googleapis.com)上运行此程序。对不起,我是新来的。什么是跨域问题?您能建议如何从url检索数据吗?这真的很好。我没有进入
success
回调,但请求实际上已经通过了。响应数据似乎出现了一些JSON错误,这很奇怪……您能告诉我您在该请求上得到的http响应代码是什么吗?此外,如果您得到一个响应主体,那么响应主体将非常有用。当服务器正确响应时,您应该看到一个js函数(这是jsonp的“p”部分)包装一个json对象。js函数的名称应该与'callback'参数匹配,该参数将是jQuery为.ajax()调用构造的请求url的一部分。请在控制台中查看:(注意,我不是问这个问题的人,只是好奇:))虽然你不是最初的提问者,但这与最初的问题相关。您的示例代码失败,因为处理程序没有用jsonp响应。在跨域模式下使用jQuery.ajax()时,url中会添加一个回调参数:正确的响应会将一个json对象包装在一个与回调同名的函数中。但是。。。这取决于服务器端代码来实现。
$.ajax(url, {
    crossDomain: true,
    dataType: 'jsonp'
}).success(function(data) {
    alert(data);
}).fail(function() {
    alert('fail');
});