使用AJAX从Ruby on Rails服务器获取JSON内容

我有一些RoR的经验,不过,我是AJAX事务的新手。 我的目标是在不同的机器上运行HTML5 + JavaScript客户端和Ruby on Rails服务器(最终)。

我想要的是JavaScript客户端以JSON格式从服务器获取内容,然后进行解析。 我已经尝试了很多东西,比如添加一个“responseType”等,但是没有它们起作用。

我当前的JavaScript文件是这样的:

$(document).ready(function() { var xmlhttp = new XMLHttpRequest(); xmlhttp.open("GET", "http://localhost:3000/contents", true); xmlhttp.send(); alert(xmlhttp.responseText); }); 

我的RoR应用程序有一个路径“/ contents”,它调用contents_controller.rb的索引函数,如下所示:

 def index @contents = Content.all.order('created_at DESC') respond_to do |format| format.html # index.html.erb format.json { render json: @contents } end end 

AJAX甚至是正确的方法吗? 我有点迷茫。

非常感谢!

使用jQuery,你可以这样做。

 $.ajax({ url: '/contents', type: 'GET', dataType: 'json', beforeSend: function (xhr) { xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content')); }, success: function(data){/* do something meaningful with data */}, error: function(xhr, status, response) {/* your error callback */} }); 

您的format.json将处理您的回复。

您可以简单地调用/contents.json(添加.json与每个url以获取输出fron json模板)或将您的默认格式设置为json,如果您从不需要html视图。 为了那个原因 …

您可以修改routes.rb文件以指定默认格式。

的routes.rb

 resources :contents, defaults: {format: :json}