一尘不染

带有Google地理编码API的json

json

这是进入一个位置时可以得到纬度和经度的代码。我相信我的代码是我所知。但是进入一个位置后,我得到了空白页。

这是代码:

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){

    var url="http://maps.googleapis.com/maps/api/geocode/json?address=";
    var query;
    var sensor="&sensor=false";
    var callback="&callback=?";


    $("button").click(function(){
          query=$("#query").val();
          $.getJSON(url+query+sensor+callback,function(json){

             $('#results').append('<p>Latitude : ' + json.results.geometry.location.lat+ '</p>');
             $('#results').append('<p>Longitude: ' + json.results.geometry.location.lng+ '</p>');

});


    });
});


</script>

</head>
<body>

<input type="text" id="query" /><button>Get Coordinates</button>
<div id="results"></div>

</body>
</html>

阅读 197

收藏
2020-07-27

共1个答案

一尘不染

您正在尝试在此处使用JSONP。

JSONP

如果URL包含字符串“ callback =?” (或类似,由服务器端API定义),则将request>视为JSONP。有关更多详细信息,请参见$
.ajax()中有关jsonp数据类型的讨论。

重要提示:从jQuery 1.4开始,如果JSON文件包含语法错误,则请求通常会静默失败。

参见:http :
//api.jquery.com/jQuery.getJSON/

但是您要调用的URL返回 JSON,因此解析失败并出现语法错误,并且无getJSON提示地失败。

现在,当您尝试更改地理编码网址以使用JSONP时,您会收到一条404错误消息,因为Google早已删除了对JSONP的支持:

简而言之:
您不能再简单地使用浏览器JavaScript中的地理编码api,必须在服务器上添加代理脚本。

即使该请求有效,您的代码中仍然存在一个错误:

json.results是结果 数组 ,因此没有geometry属性。

您必须访问数组的第一个元素才能到达具有以下geometry属性的实际对象:

json.results[9].geometry.location.lng
2020-07-27