检索JSON抛出错误:意外的令牌:

时间:2012-02-07 14:24:28

标签: javascript ajax json google-maps google-maps-api-3

我正在通过AJAX从Google Maps API中检索高程数据。

我正在获取我想要的数据,就好像我在Chrome中查看控制台一样,我可以看到200状态代码,并且可以在响应标签中看到数据。但是会抛出'Uncaught SyntaxError:Unexpected token:'所以我无法显示JSON文件中的任何内容。

这是我的代码:

var theURL = 'http://maps.googleapis.com/maps/api/elevation/json?locations=' + longitude + ',' + latitude + '&sensor=false&callback=?';    
$.ajax({
        url: theURL,
        type: 'get',
        dataType: 'json',
        cache: false,
        crossDomain: true,
        success: function (data) {
            var theData = $.parseJSON(data);
            console.log(theData);
        }
    });

实时代码在这里:http://map.colouringcode.com/

非常感谢所有帮助。

2 个答案:

答案 0 :(得分:0)

Google Maps API不支持直接JSONP请求。

相反,您需要使用Javascript API

答案 1 :(得分:0)

认识到这个问题已经过时了,我希望这可能会在将来帮助某人。这是我第一次遇到javascript,特别是所有这些JSON的东西,因此导致很多人在桌子上试图找出我做错了什么。

这是我的解决方案,它检索客户端位置(在lat和lng中),然后使用谷歌地理编码API来确定他们在人类可读的位置#34;格式。

function currentLocation() {
    navigator.geolocation.getCurrentPosition(foundLocation, errorLocation);

    function foundLocation(position) {
        var lat = position.coords.latitude;
        var lng = position.coords.longitude;

        //This is where the geocoding starts
        var locationURL= "http://maps.googleapis.com/maps/api/geocode/json?latlng="
            + lat + "," + lng + "&sensor=false&callback=myLocation"

        //This line allows us to get the return object in a JSON
        //instead of a JSONP object and therefore solving our problem
        $.getJSON(locationURL, myLocation);
    }

    function errorLocation() {
        alert("Error finding your location.");
    }
}

function myLocation(locationReturned) {
    var town = locationReturned.results[0].address_components[1].short_name;
    var state = locationReturned.results[0].address_components[4].short_name;
    console.log(town, state);
}