我正在研究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并显示在浏览器中。
为什么我无法获得此错误的任何想法,我从未尝试过成功的回调?
答案 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;