无法使用Angular Js访问restful API

时间:2014-01-16 04:34:45

标签: angularjs

我在线获得了一个示例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

1 个答案:

答案 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。