有一个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对象做一些事情。
app.controller('mainController',['$ scope','webServiceFactory',function($ scope,webServiceFactory){
webServiceFactory.success(function (data) {
$scope.Countries = data;
});
}]);
当我在本地IIS中托管服务并使用localhost使用它时,它可以工作。这意味着使用JSON String数组没有错误。
但是,当我使用完全限定名称或机器名称时,FireFox会指示CORS标头缺少“Access-Control-Allow-Origin”。
这可能会导致另一个问题,如何使其与CORS兼容。但是,主要问题已经结束。
所以,我的问题是,如何在AngularJS中使用一个只返回没有键/值对的字符串数组的Web服务?
由于
答案 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;
});