0

我对谷歌 API 网址有疑问。我想从邮政编码中获取地址。但我无法获得价值

我的代码是

<script type="text/javascript">
var filter_new = "60609";
var request = new XMLHttpRequest();
        request.open("GET", "http://maps.googleapis.com/maps/api/geocode/xml?sensor=false&address="+filter_new, false);
        request.send();
        var xml = request.responseXML;
        var users = xml.getElementsByTagName("GeocodeResponse");
        for(var i = 0; i < users.length; i++)
        {
            var user = users[i];
            var names = user.getElementsByTagName("formatted_address");
            for(var j = 0; j < names.length; j++)
            {
                var filter_new1=names[j].childNodes[0].nodeValue;
            }
        }
alert(filter_new1);
</script>

当我运行此代码时,它显示以下错误:

XMLHttpRequest cannot load http://maps.googleapis.com/maps/api/geocode/xml?sensor=false&address=60609. Origin http://localhost is not allowed by Access-Control-Allow-Origin.

Uncaught Error: NETWORK_ERR: XMLHttpRequest Exception 101 

请帮我。

4

2 回答 2

0

您的代码有多个问题:

  1. 浏览器通常不允许您将 Ajax 直接用于与您所在页面不同的域。这称为同源保护。这是您看到的错误。解决此问题的典型方法是执行 JSONP 调用,该调用使用脚本标记来解决此限制。您可以在 Google 的 API 网站上阅读有关如何执行此操作的信息。

  2. 您使用 async false 作为参数(例如,尝试进行同步 ajax 调用)。由于您可能会使用只能是异步的 JSONP,因此您需要更改代码的工作方式以处理异步响应。这是 JSONP 的Google Maps API 示例

于 2013-11-05T06:49:11.283 回答
0

您可以发起 CORS 或 JSONP 请求。谷歌两者都支持。请在

  1. JSONP: http ://api.jquery.com/jQuery.getJSON/ http://learn.jquery.com/ajax/working-with-jsonp/

  2. CORS: 如何获得跨域资源共享 (CORS) 发布请求 http://www.html5rocks.com/en/tutorials/cors/

于 2013-11-05T06:24:45.517 回答