JQuery将JSON解释为脚本?

4
如果你们能帮我解决这个问题,我会非常感激。
我遇到的错误是:
“Resource interpreted as Script but transferred with MIME type application/json.”(“Resource”是指来自Google服务器的json响应。)
以下是我的代码:
  $(document).ready(function(){
    $.getJSON("http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false&callback=?", function(jsondata) {
    });
  });

当我运行该代码时,我会得到一个JSON响应,其中包含“请使用POST请求”的提示。也许可以尝试使用$.ajax,并指定POST方法? - nathan gonzalez
5个回答

5
尝试使用这个替代方案:
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="http://maps.google.com/maps/api/js?sensor=false"></script>

<script>
    $(document).ready(function(){
        var loc = "1600 Amphitheatre Parkway, Mountain View, CA";
        var geocoder = new google.maps.Geocoder();
        geocoder.geocode( {'address': loc },
            function(data, status) { console.log(data); });
    });
</script>

你可能是有史以来最棒的人。非常感谢你! - Andrew
同意,我一直在寻找这个确切的解决方案。你就是老大。 - Tyler Brock
出于好奇...有人了解谷歌地理编码API的工作原理吗(应该使用哪个),似乎有几个不同的选项,每个选项都有不同的限制和功能。 至少可以说非常令人困惑。 - Tyler Brock

1

您所调用的网站不支持JSONP,只能返回JSON格式。


非常感谢您的回复,但是您知道我该如何让我的代码工作,既然我知道我调用的网站只响应json吗? - Andrew
@Andrew - 我之前回答你的问题(https://dev59.com/-m435IYBdhLWcg3wrSBB#5281137)展示了如何使用API对象来进行地理编码。如果你想的话,我可以在这里重新发布它... - Pandincus
请注意,使用地理编码只允许您根据谷歌地图的条款使用数据。请查看使用条款。 - Shaz

1
为了从另一个域(如googleapis.com)获取JSON,您必须使用JSONP而不是普通的JSON(有关更多信息,请阅读同源策略)。
幸运的是,在您的代码中添加一个值为问号的GET参数(callback=?)会导致jQuery尝试进行JSONP调用。 幸的是,该网站忽略了您对JSONP的请求并提供了纯JSON。
两种可能的原因是该网站不支持JSONP(这对于公共Google API来说很奇怪),或者它期望名称是其他内容(即不是callback=)。 查看Google API文档以了解他们期望/支持什么。

支持的选项:回调、基础域、语言、其他参数 --- 显然谷歌接受回调;感谢消除了一个可能的错误来源。 - Andrew

0

我的地图API有点生疏,但是末尾的callback=?不会将输出转换为JSONP结果,这确实是一个脚本吗?

尝试放弃查询字符串的回调部分。


如果我这样做,最终会出现Access-Control-Allow-Origin错误。:( 这其实就是我刚刚解决的问题。 - Andrew

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接