$http.get 和 $http.JSONP 未能获得 google api 响应
Posted
技术标签:
【中文标题】$http.get 和 $http.JSONP 未能获得 google api 响应【英文标题】:$http.get and $http.JSONP failed to get the google api response 【发布时间】:2015-05-15 13:23:37 【问题描述】:我尝试使用 angularjs $http .get 方法和 $http.JSONP 方法获取“http://maps.google.com/maps/api/geocode/json?address=Canada&sensor=true®ion=USA”的 api 响应。但它不能正常工作,它什么也不返回。当我通过 REST 客户端和浏览器尝试此 api 时,它提供的 JSON 数据的状态码为 200。
这是我的代码... 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);
);
]);
在浏览器中运行此代码时,它不会返回任何内容。抛出错误。 你能帮我解决这个问题吗?
【问题讨论】:
提及您遇到的错误 状态码:404 Request Failed response...你能告诉我如何通过angularjs调用这个api“maps.google.com/maps/api/geocode/…” 【参考方案1】:要在 Angular 中使用 jsonp,您需要... ?callback=JSON_CALLBACK
传递给 get 调用..
例如
$http(method: $scope.method, url: "http://maps.google.com/maps/api/geocode/json?address=Canada&sensor=true®ion=USA&callback=JSON_CALLBACK").
阅读更多信息here
【讨论】:
感谢您的回答。我已尝试过 ?callback=JSON_CALLBACK。但它不起作用......在 plunker 演示中尝试这个 $http(method: $scope.method, url: "maps.google.com/maps/api/geocode/…") :plnkr.co/edit/spDiD4V6JCCXrtRNDV11?p=preview ...一旦你这样做了你就可以理解我的问题了跨度> 【参考方案2】:您的代码唯一的问题是没有像 JSONP 这样的 HTTP 方法。在您的情况下,您需要 GET。所以改用这个:
$scope.method = 'GET';
演示: http://plnkr.co/edit/I6qAMbsvLwM3vgZFQa0S?p=preview
【讨论】:
感谢您的回答。我试过 $scope.method = 'GET';由于请求失败,这也无法显示错误。此网址plnkr.co/edit/I6qAMbsvLwM3vgZFQa0S?p=preview 也显示相同的错误“请求失败” 我可以看到我提供的演示工作完美,不知道你会失败。【参考方案3】:您必须将请求方法从 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],状态:“OK”
希望你得到你想要的。
【讨论】:
以上是关于$http.get 和 $http.JSONP 未能获得 google api 响应的主要内容,如果未能解决你的问题,请参考以下文章