我试图得到api回复" http://maps.google.com/maps/api/geocode/json?address=Canada&sensor=true®ion=USA"使用angularjs $ http .get方法和$ http.JSONP方法。但它没有正常工作它什么都不返回。当我通过REST客户端和浏览器尝试此API时,它提供状态代码为200的JSON数据。
这是我的代码...... 的index.html
<html ng-app="myApp">
<body ng-controller="MyCtrl">
<button ng-click="getlocation()">Get Location</button>
</body>
</html>
app.js
var app = angular.module('myApp',[]);
app.controller('MyCtrl', ['$scope','$http',function ($scope,$http) {
$scope.getlocation=function(){
$scope.method = 'JSONP';
$http({method: $scope.method, url: "http://maps.google.com/maps/api/geocode/json?address=Canada&sensor=true®ion=USA"}).
success(function(data, status) {
$scope.status = status;
$scope.data = data;
alert(JSON.stringify(data));
}).
error(function(data, status) {
$scope.data = data || "Request failed";
$scope.status = status;
alert($scope.data+$scope.status);
});
}
}]);
在浏览器中运行此代码时,它什么都不返回。引发错误。 你能帮我摆脱这个问题吗?
答案 0 :(得分:1)
在角度中使用jsonp,你需要... ?callback=JSON_CALLBACK
传递给get调用..
e.g。
$http({method: $scope.method, url: "http://maps.google.com/maps/api/geocode/json?address=Canada&sensor=true®ion=USA&callback=JSON_CALLBACK"}).
详细了解here
答案 1 :(得分:0)
您的代码唯一的问题是没有像JSON这样的HTTP方法。在你的情况下,你需要GET。所以请改用它:
$scope.method = 'GET';
答案 2 :(得分:0)
您必须将请求方法从 JSONP 更改为 GET 。
$scope.getlocation=function(){
$scope.method = 'get';
$http({method: $scope.method, url: "http://maps.google.com/maps/api/geocode/json?address=Canada&sensor=true®ion=USA"}).
success(function(data, status) {
$scope.status = status;
$scope.data = data;
alert(JSON.stringify(data));
}).
error(function(data, status) {
$scope.data = data || "Request failed";
$scope.status = status;
alert($scope.data+$scope.status);
});
}
我已经从我这边测试了它的回报
对象{结果:数组[1],状态:“确定”}
希望你得到你想要的东西。