我在线获得了一个示例API。我想将它用于我的Angular示例应用程序。但是,我无法访问下面的restful API。请看一下我的代码。
function Hello($scope, $http) {
$http({method: 'GET', url: 'http://api.geonames.org/citiesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&lang=de&username=demo'}).
success(function(data) {
alert("Success");
}).
error(function(data){
alert("Error");
});
}
Thank you
Nizam
答案 0 :(得分:2)
您需要使用JSONP才能通过跨域的Ajax请求数据。好消息是你可以替换这段代码:
function Hello($scope, $http) {
$http.get('http://api.worldweatheronline.com/free/v1/weather.ashx?q=London&format=json&num_of_days=5&key=atf6ya6bbz3v5u5q8um82pev').
success(function(data) {
alert("success");
$scope.greeting = data["content"];
console.log(data["content"]);
}).
error(function(data){
alert("Error");
});
}
使用此代码(demo):
function Hello($scope, $http) {
$http
.jsonp('http://api.worldweatheronline.com/free/v1/weather.ashx?q=London&format=json&num_of_days=5&key=atf6ya6bbz3v5u5q8um82pev&callback=JSON_CALLBACK')
.success(function(data) {
alert("success");
$scope.greeting = data["content"];
console.log(data["content"]);
})
.error(function(data){
alert("Error");
});
}
以下是$http.jsonp()
方法需要字符串'callback=JSON_CALLBACK'
出现在网址中的位置。它将使用.success()
将引用的生成函数名称替换它。这不会神奇地适用于不支持JSONP的服务器,但在这种情况下是服务器URL。