【问题标题】:Angular can't load JSON data provided by RailsAngular 无法加载 Rails 提供的 JSON 数据
【发布时间】:2016-04-08 19:12:17
【问题描述】:

在我的 Rails 后端中,我有这种方法可以从数据库中获取数据并从中生成 json:

  def index
    @airports = Airport.select('id,city,country')
    render status:200, json: { airports: @airports }
  end

在我的路线中,我有这个方法调用:

  resources :airports

当我看到localhost:3000/airports 时,我会看到一个 JSON 文本墙。

现在,当我尝试从我的 Angular 控制器加载该 JSON 时,出现如下屏幕截图所示的错误:(浏览器控制台)

这是我的控制器:

AppControllers.controller('DepartureLocationCtrl', [
  '$scope','$http',
  function($scope,$http){
    $http.get('localhost:3000/airports').success(function(data){
      $scope.departureLocations = data;
    });
  }
]);

我知道控制器不适合这个,那么我该如何解决这个错误并改用工厂?

【问题讨论】:

  • 该异常是否来自您的浏览器?
  • @AnthonyE 是的。

标签: ruby-on-rails angularjs json api


【解决方案1】:

问题是我没有在路径中使用http://。

编辑:@Charlie Brown 很好,现在我只在路径中使用了/airports,效果很好。

AppControllers.controller('DepartureLocationCtrl', [
  '$scope','$http',
  function($scope,$http){
    $http.get('/airports').success(function(data){
      $scope.departureLocations = data;
    });
  }
]);

【讨论】:

  • 注意,你也可以去掉“localhost:3000”部分,直接$http.get('/airports')。它失败的原因是它认为localhost:3000是一个特殊的协议(就像http是一个协议)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-23
  • 2015-07-27
相关资源
最近更新 更多