【问题标题】:Unable to get json info from controller when using Angular's $http使用 Angular 的 $http 时无法从控制器获取 json 信息
【发布时间】:2014-11-28 15:51:38
【问题描述】:

所以我试图从控制器中的操作中获取一些信息。

当前的操作如下所示:

def index
        @users = User.all

        respond_to do |format|
            format.html
            format.json { render json: @users }
        end
end

这个索引页被设置为routes.rb中的根

现在,这就是我的 AngularJs 控制器的样子,我试图从那里获取信息:

@test.controller 'TestCtrl', ['$scope', '$location', '$http', ($scope, $location, $http) ->
    $scope.data = []

    $http.get('/')
    .success (data) =>
        $scope.data = data
        console.log($scope.data)
    .error (data) ->
        console.log('error!')
]

当我加载根页面时,我只会在 Javascript 控制台日志中将整个页面加载为 html。

那么我是否遗漏了一些需要做的事情才能让动作index 以json 响应我的AngularJs 控制器?

服务器日志:

Started GET "/" for 127.0.0.1 at 2014-11-28 18:02:26 +0200
Processing by VisitorsController#index as HTML
   (0.4ms)  SELECT COUNT(*) FROM "users"
  User Load (0.2ms)  SELECT  "users".* FROM "users"  WHERE "users"."id" = 1  ORDER BY "users"."id" ASC LIMIT 1
   (2.1ms)  SELECT COUNT(*) FROM "users" INNER JOIN "relationships" ON "users"."id" = "relationships"."followed_id" WHERE "relationships"."follower_id" = $1  [["follower_id", 1]]
   (0.2ms)  SELECT COUNT(*) FROM "users" INNER JOIN "relationships" ON "users"."id" = "relationships"."follower_id" WHERE "relationships"."followed_id" = $1  [["followed_id", 1]]
  Rendered users/_stats.html.erb (4.8ms)
  Rendered visitors/index.html.erb within layouts/application (6.9ms)
  Rendered layouts/_navigation_links.html.erb (0.3ms)
  Rendered layouts/_navigation.html.erb (0.7ms)
  Rendered layouts/_messages.html.erb (0.0ms)
Completed 200 OK in 137ms (Views: 134.0ms | ActiveRecord: 2.9ms)

【问题讨论】:

  • 您遇到了什么错误?你检查过你的 Rails 应用服务器日志吗?
  • 我没有收到任何错误。我的问题只是控制器以 html 而不是 json 格式提供了我的 AngularJs 控制器数据。如果我打印出从请求中获得的数据,它就是 html 中的整个页面。
  • 你能在你的控制器中试试这个吗? format.json { render json: @users.to_json }
  • 类似vistors/index.json 或者你需要告诉 Angular 的 $http.get 来获取 json
  • 所以如果你现在有一个visitors/index.json那为什么没有$http.get(/index.json).success,你需要调整.get()里面

标签: javascript ruby-on-rails json angularjs


【解决方案1】:

我通过不查询'/' 路由而是查询'/users.json' 解决了这个问题。即使你这样做:'/.json',它也不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-26
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 2019-11-14
    • 2012-07-14
    • 1970-01-01
    相关资源
    最近更新 更多