使用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}