【问题标题】:AJAX to fetch model data from viewAJAX 从视图中获取模型数据
【发布时间】:2018-01-31 00:30:06
【问题描述】:

在打印我的 AJAX 调用结果时,我得到了[object Object]。请帮我找出我做得不对的部分。

事件模型具有列namedescription。我期望这种输出是正确的吗?

{ "1" =>
  {
    "name" => "some name",
    "description" => "some description"
  }
}

查看:

function testAJAX() {
  var test_url = "#{foo_events_path}";
  $.ajax({
    type: "GET",
    url: test_url,
    data: {
      event_id: 1
    },
    success:function(data) {
      var response = JSON.parse(JSON.stringify(data));
      alert(response.events);
    }
  });

events_controller.rb

def foo
  @events = Event.where(id: params[:event_id])
  render json: { events: @events }.to_json
end

routes.rb

resources :events do
  collection do
    get 'foo'
  end
end

我尝试使用谷歌搜索,但其中大多数使用 AJAX for php。这是我能找到的与我的问题最接近的:Is it possible to refresh partial frequently using Ajax?

【问题讨论】:

  • 我刚刚意识到,也许标题应该是“AJAX 从视图中获取数据库记录”。我的坏
  • 你为什么要JSON.parse(JSON.stringify(data))?您可能会收到一个字符串形式的 json 对象数组,在这种情况下,只需执行 JSON.parse(data) 位。您可以随时通过console.log(typeof(data)) 来查看您获取的数据类型。
  • @jvillian 好的,所以我删除了 JSON.stringify() 部分,然后登录到控制台。现在它说我有一个错误JSON.parse: unexpected character at line 1 column 2 of the JSON data 所以我猜这意味着我在控制器方法中有错误的语法?
  • 去掉to_json,你会得到什么?
  • 嗯,实际上,你返回的是一个哈希,所以你不应该做任何事情,因为哈希应该被转换成一个合适的 js 对象。而且,是的,我猜你的to_json 是不正确的。 (哦,我错过了@SebastianPalma 的评论。你现在可以放心地忽略我了。)

标签: jquery ruby-on-rails ajax


【解决方案1】:

您的控制器方法应如下所示:

def foo
  @events = Event.where(id: params[:event_id])
  render json: { events: @events }
end

render json: 将创建一个有效的 JSON 响应。

然后,您应该可以像这样访问您的数据对象:

function testAJAX() {
  var test_url = "#{foo_events_path}";
  $.ajax({
    type: "GET",
    url: test_url,
    data: {
      event_id: 1
    },
    success:function(data) {
      alert(data.events);
    }
  });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    • 2020-07-26
    相关资源
    最近更新 更多