Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery AJAX从视图中获取模型数据_Jquery_Ruby On Rails_Ajax - Fatal编程技术网

Jquery AJAX从视图中获取模型数据

Jquery AJAX从视图中获取模型数据,jquery,ruby-on-rails,ajax,Jquery,Ruby On Rails,Ajax,当打印AJAX调用的结果时,我得到了[object object]。请帮我找出我做得不对的部分 事件模型有列名称,说明。我期望这种输出正确吗 { "1" => { "name" => "some name", "description" => "some description" } } 视图: 事件\u控制器.rb routes.rb 我尝试过谷歌搜索,但大多数都使用AJAX进行php。这是我能找到的与我的问题相关的最接近的方法:您的控制器方法应该如

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

事件模型有列
名称
说明
。我期望这种输出正确吗

{ "1" =>
  {
    "name" => "some name",
    "description" => "some description"
  }
}
视图: 事件\u控制器.rb routes.rb
我尝试过谷歌搜索,但大多数都使用AJAX进行php。这是我能找到的与我的问题相关的最接近的方法:

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

def foo
  @events = Event.where(id: params[:event_id])
  render json: { events: @events }
end
呈现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);
    }
  });

控制器方法应如下所示:

def foo
  @events = Event.where(id: params[:event_id])
  render json: { events: @events }
end
呈现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);
    }
  });

我刚刚意识到,也许标题应该是“从视图中获取数据库记录的AJAX”。我的问题你为什么要做
JSON.parse(JSON.stringify(data))
?您可能会收到一个字符串形式的json对象数组,在这种情况下,只需执行
json.parse(data)
位即可。您可以始终执行
console.log(typeof(data))
来查看您获得的数据类型。@jvillian好的,所以我删除了JSON.stringify()部分,然后将其记录到控制台。现在它说我有一个错误
JSON.parse:JSON数据第1行第2列的意外字符
,所以我猜这意味着我在控制器方法中有错误的语法?删除
到_JSON
,你得到了什么?好吧,实际上,你返回了一个哈希,因此,您不必做任何事情,因为散列应该转换为适当的js对象。而且,是的,我猜你的
to_json
是不正确的。(哦,我错过了@SebastianPalma的评论。你现在可以放心地忽略我了。)我刚刚意识到,也许标题应该是“从视图中获取数据库记录的AJAX”。我的问题你为什么要做
JSON.parse(JSON.stringify(data))
?您可能会收到一个字符串形式的json对象数组,在这种情况下,只需执行
json.parse(data)
位即可。您可以始终执行
console.log(typeof(data))
来查看您获得的数据类型。@jvillian好的,所以我删除了JSON.stringify()部分,然后将其记录到控制台。现在它说我有一个错误
JSON.parse:JSON数据第1行第2列的意外字符
,所以我猜这意味着我在控制器方法中有错误的语法?删除
到_JSON
,你得到了什么?好吧,实际上,你返回了一个哈希,因此,您不必做任何事情,因为散列应该转换为适当的js对象。而且,是的,我猜你的
to_json
是不正确的。(哦,我错过了@SebastianPalma的评论。你现在可以放心地忽略我了。)
function testAJAX() {
  var test_url = "#{foo_events_path}";
  $.ajax({
    type: "GET",
    url: test_url,
    data: {
      event_id: 1
    },
    success:function(data) {
      alert(data.events);
    }
  });