GoogleMapsAPI的JSON" Uncaught SyntaxError:意外的令牌:"

时间:2015-09-04 23:38:10

标签: json angularjs google-maps-api-3

我正在研究AngularJS。 我试图以JSON响应格式获取GoogleMapsAPI。 但Chrome报告" Uncaught SyntaxError:意外的令牌:"。

到目前为止,我只是尝试使用以下代码连接并查看对象信息:

var deferred = $q.defer();

    $http.jsonp('https://maps.googleapis.com/maps/api/distancematrix/json?origins=Tokyo&destinations=Kyoto&mode=Driving&sensor=false', {
        params: {
            callback: 'JSON_CALLBACK'
        }
    }).success(function(response){
        console.dir(data,status,headers,config);
        deferred.resolve(data);   
    }).error(function(data,status,headers,config){
        deferred.reject(status);
    });

    return deferred.promise;

JSON将在回复中返回,但Chrome报告" Uncaught SyntaxError:意外的令牌:" 我一直在控制台中收到以下错误:

Uncaught SyntaxError: Unexpected token : (18:20:02:095 | error, javascript)
  at https://maps.googleapis.com/maps/api/distancematrix/json?origins=Tokyo&destinations=Kyoto&mode=Driving&sensor=false&callback=angular.callbacks._0:2

GoogleMapsApi的JSON响应:

    {
   "destination_addresses" : [ "Kyoto, Kyoto Prefecture, Japan" ],
   "origin_addresses" : [ "Tokyo, Japan" ],
   "rows" : [
      {
         "elements" : [
            {
               "distance" : {
                  "text" : "457 km",
                  "value" : 456931
               },
               "duration" : {
                  "text" : "5 hours 39 mins",
                  "value" : 20338
               },
               "status" : "OK"
            }
         ]
      }
   ],
   "status" : "OK"
}

如果我直接导​​航到url本身,则会返回JSON并显示在浏览器中。

为什么我无法获得此错误的任何想法,我从未尝试过成功的回调?

1 个答案:

答案 0 :(得分:0)

看起来Google's Distance Matrix API返回JSON,而不是JSONP。

What are the differences between JSON and JSONP?

也许尝试正常的$http.get()电话; Angular会自动解析JSON响应:

var promise = $http.get('https://maps.googleapis.com/maps/api/distancematrix/json?origins=Tokyo&destinations=Kyoto&mode=Driving&sensor=false')
    .then(function(response){
        var data = response.data,
            status = response.status,
            headers = response.headers,
            config = response.config;
        console.dir(data,status,headers,config);
        return data; 
    }, function(response){
        var status = response.status;
        return status;
    });

return promise;