Jquery AJAX从视图中获取模型数据
当打印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。这是我能找到的与我的问题相关的最接近的方法:您的控制器方法应该如
[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);
}
});