0

Google API の URL に問題があります。郵便番号から住所を取得したい。しかし、私は価値を得ることができません

私のコードは

<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 を実行することはできません。これは、同一オリジン保護と呼ばれます。これが表示されているエラーです。これを回避する一般的な方法は、script タグを使用してこの制限を回避する JSONP 呼び出しを行うことです。その方法については、Google の API サイトを参照してください。

  2. 引数として async false を使用しています (たとえば、同期 ajax 呼び出しを実行しようとしています)。非同期にしかできない JSONP を使用する可能性が高いため、コードの動作方法を非同期応答で動作するように変更する必要があります。JSONPのGoogle Maps API の例を次に示します。

于 2013-11-05T06:49:11.283 に答える