尝试从远程URL获取JSON时出现错误

问题描述:

我试图从远程URL加载此json file。一开始我是用$ http.get功能,但我得到一个错误信息:尝试从远程URL获取JSON时出现错误

CORS“访问控制允许来源”

现在我使用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']); 

我已经HAVA读了很多关于计算器文章,但没有人为我工作。

我建议使用$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的异步方法具有相同的行为在同步环境... - )

你最初的错误是你的线索。端点服务器将不允许从另一个域进行访问。

CORS: Cross Origin Requests

你需要让你想使用的HTTP方法类型的终端服务器上的访问(即GET,POST,HEAD,...),此外这取决于你在做什么,你可能需要允许OPTIONS请求,请参阅上面的MDN文档中的预检请求

如果您无法访问该服务器,则可能需要通过在服务器上调用$ http来解决该问题。在使用PHP作为代理并使用PHP的file_get_contents函数从另一个域的其他服务器获取文件之前,我已经完成了此操作。