以下是我如何制作ajax请求
#action
def get_item
if request.get?
binding.pry #it always stop here, so it's working
item = Item.where(...)
unless item
item = Item.new
# .....
end
respond_to do |format|
format.json { render(json: item) }
end
elsif request.post?
# ......
end
end
#view
$.ajax({
type: "GET",
url: "/contr/get_item",
data: {key1: "value1"},
//datatype: "json",
success: function(data){
console.log("ajax success, data -> " + data[0]);
}
});
虽然get_item
中的代码已执行,但页面上的data
值始终为undefined
。
我错过了什么?
P.S。请注意,请求正在从json中的服务器发回。我可以通过"调试工具"在Chrome中看到它。单击F12并转到“网络”选项卡。
答案 0 :(得分:1)
试试这个:
def get_item
if request.get?
item = Item.where(...)
unless item
item = Item.new
# .....
end
render :json => item.to_json
elsif request.post?
#...
end
end
$.ajax({
type: "GET",
url: "/contr/get_item",
data: {key1: "value1"},
//datatype: "json",
success: function(data){
console.log("ajax success, data -> " + data[0]);
}
});
答案 1 :(得分:0)
您的网址需要告诉您要使用的格式。在你的情况下,它应以.json
结束,以便在json中有响应。
#view
$.ajax({
type: "GET",
url: "/contr/get_item.json",