我正在尝试从远程网址加载此json file。一开始我使用$ http.get函数,但是我收到了下一条错误消息:
CORS'Access-Control-Allow-Origin'
现在我正在使用JSONP,但没有任何反应。
service.js文件:
angular.module("elcomaApp").factory('ElcomaService', ['$http', function($http){
return $http({
method: 'JSONP',
url: 'http://vagalumewifi.com.br/timeline.json'
}).success(function(response){
return response.data;
}).error(function(err){
return err;
});
}]);
controller.js文件:
angular.module("elcomaApp", []).controller('MainController', ['$scope', 'ElcomaService', function($scope, ElcomaService){
$scope.name = 'Natanael Santos';
console.log($scope.name);
ElcomaService.success(function(data){
$scope.elcomaData = JSON.parse(data);
var i = 0;
for (x in $scope.elcomaData){
console.log(i);
i++;
console.log(x.date);
}
}).error(function(data){
console.log(data);
});
}]);
app.js文件:
var app = angular.module("elcomaApp", ['ngMaterial', 'ngRoute']);
我已经阅读了很多关于stackoverflow的文章,但没有人为我工作。
答案 0 :(得分:0)
我建议使用$http.jsonp(url)
方法:
angular.module("elcomaApp").factory('ElcomaService', ['$http', function($http) {
$http.jsonp('http://vagalumewifi.com.br/timeline.json')
.success(function(data) {
console.log(data); // you can't `return` here...
}).error(function(err){
console.err(err);
});
}]);
注意:请注意,您不能指望异步方法中的return
具有与同步环境中相同的行为......: - )
答案 1 :(得分:0)
您的原始错误是您的线索。端点服务器不允许从其他域访问。
您需要允许在端点服务器上访问您要使用的HTTP方法类型(即GET,POST,HEAD,...)此外,根据您正在执行的操作,您可能需要允许OPTIONS请求,请参阅上面MDN文档中的预检请求。
如果您无法访问该服务器,则可能需要通过使 $ http 调用服务器上将为您提取文件的脚本来解决此问题。在使用PHP作为代理并使用PHP的 file_get_contents 函数从其他域的其他服务器获取文件之前,我已经完成了这项工作。