我正在使用angular to geo定位客户端的地址使用angular和一些API服务。我已经得到它以正确找到IP地址,但由于某种原因,我还没有能够执行地理查找。 API服务运行正常,我的URL似乎也很好。
'use strict';
angular.module('Zeus', [])
.controller('ZeusController', function ($scope, $http) {
function fetchIP() {
$http.get("http://ipv4.myexternalip.com/json")
.then(function (response) {
$scope.ip = response.data.ip;
});
return $scope.ip
}
var ip = String(fetchIP());
function geoIP() {
$http.get("https://freegeoip.net/json/" + String(ip))
.then(function (response) {
$scope.country_code = response.data.country_code;
});
return $scope.country_code;
}
var latLon = geoIP();
});
我在Chrome控制台中收到以下错误:
Failed to load resource: the server responded with a status of 404 (OK)
https://freegeoip.net/json/undefined
绝对不应该定义URL,因为使用angular返回url的IP会在Web浏览器中返回正确的响应。
答案 0 :(得分:3)
那是因为geoIP()
有回调而你必须处理该回调
喜欢这个
function geoIP() {
return $http.get("https://freegeoip.net/json/" + String(ip))
.then(function(response) {
return response.data.country_code;
});
}
var latLon;
geoIP().then(function(r) {
latLon = r;
})