我对谷歌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
请帮助我。
您可以发起 CORS 或 JSONP 请求。谷歌支持两者。请在以下位置学习它们
-
JSONP:http://api.jquery.com/jQuery.getJSON/http://learn.jquery.com/ajax/working-with-jsonp/
-
科尔斯:如何使跨域资源共享 (CORS) 后请求正常工作http://www.html5rocks.com/en/tutorials/cors/
您的代码存在多个问题:
-
浏览器通常不允许您将 Ajax 定向到与您所在的页面不同的域。 这称为同源保护。 这是您看到的错误。 解决此问题的典型方法是执行 JSONP 调用,该调用使用脚本标记来解决此限制。 您可以在Google的API网站上阅读有关如何执行此操作的信息。
-
你正在使用异步 false 作为参数(例如,尝试进行同步 ajax 调用)。 由于您可能要使用只能是异步的 JSONP,因此您需要更改代码的工作方式以处理异步响应。 这是JSONP的Google Maps API示例。