在AngularJS

时间:2015-10-22 22:23:12

标签: json angularjs

有一个Web服务以下面的格式返回一个json对象:

["Brazil","Argentina","Chile"]

(这个json对象已被在线JSON解析器解析,证明它是一个合适的json对象)

在AngularJS中,我编写了以下代码来使用WebService。

app.factory('webServiceFactory', ['$http', function ($http) {
    return $http.get('http://SomeWebService/api/anOperation')
            .success(function (data) {
                return data;
            })
            .error(function (err) {
                return err;
            });
}]);

当我在控制器中调用它时,成功部分永远不会被击中,而是执行错误部分。这意味着调用Web服务时出现了一些错误。我认为它必须对正在返回的JSON对象做一些事情。

编辑1:控制器代码

app.controller('mainController',['$ scope','webServiceFactory',function($ scope,webServiceFactory){

webServiceFactory.success(function (data) {
    $scope.Countries = data;
});

}]);

编辑2:Localhost& CORS

当我在本地IIS中托管服务并使用localhost使用它时,它可以工作。这意味着使用JSON String数组没有错误。

但是,当我使用完全限定名称或机器名称时,FireFox会指示CORS标头缺少“Access-Control-Allow-Origin”。

这可能会导致另一个问题,如何使其与CORS兼容。但是,主要问题已经结束。

所以,我的问题是,如何在AngularJS中使用一个只返回没有键/值对的字符串数组的Web服务?

由于

2 个答案:

答案 0 :(得分:1)

也许您正在向其他域中的服务发出请求;这是不可能的,因为存在“同源政策”here

答案 1 :(得分:1)

     app.factory('webServiceFactory', ['$http', function ($http) {
            return
             {
               getCountries: function(callback){
                   $http.get('http://SomeWebService/api/anOperation').then(function(reponse){
                     callback(response.data);
                 });
               }
             };
            }]);

然后在您的控制器中

webServiceFactory.getCountries(function(countries){
  $scope.countries = countries;
});