Javascript 使用AJAX从RubyonRails服务器获取JSON内容
我有一些RoR方面的经验,不过,我在AJAX方面是个新手。我的目标是在不同的机器上运行HTML5+JavaScript客户端和RubyonRails服务器(最终) 我想要的是JavaScript客户端以JSON格式从服务器获取内容,然后进行解析。我已经尝试了很多方法,比如添加一个“responseType”,等等,但是没有一个奏效 我当前的JavaScript文件如下所示:Javascript 使用AJAX从RubyonRails服务器获取JSON内容,javascript,ruby-on-rails,ajax,json,Javascript,Ruby On Rails,Ajax,Json,我有一些RoR方面的经验,不过,我在AJAX方面是个新手。我的目标是在不同的机器上运行HTML5+JavaScript客户端和RubyonRails服务器(最终) 我想要的是JavaScript客户端以JSON格式从服务器获取内容,然后进行解析。我已经尝试了很多方法,比如添加一个“responseType”,等等,但是没有一个奏效 我当前的JavaScript文件如下所示: $(document).ready(function() { var xmlhttp = new XMLHtt
$(document).ready(function() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "http://localhost:3000/contents", true);
xmlhttp.send();
alert(xmlhttp.responseText);
});
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
我的RoR应用程序有一个路径“/contents”,它调用contents\u controller.rb的索引函数,如下所示:
$(document).ready(function() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "http://localhost:3000/contents", true);
xmlhttp.send();
alert(xmlhttp.responseText);
});
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 */}
});
您的
格式.json将处理您的响应。使用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(使用每个url添加.json以获得json模板的输出)
或
如果不需要html视图,请将默认格式设置为json。为此
您可以修改routes.rb文件以指定默认格式
routes.rb
resources :contents, defaults: {format: :json}
您可以简单地调用/contents.json(使用每个url添加.json以获得json模板的输出)
或
如果不需要html视图,请将默认格式设置为json。为此
您可以修改routes.rb文件以指定默认格式
routes.rb
resources :contents, defaults: {format: :json}
当您使用jQuery时,为什么要使用普通的js方法?看看我认为,ajax是否是正确的方法取决于您自己。为什么在使用jQuery时使用普通的js方法?看看我想,ajax是否是正确的实现方法取决于您自己。我不知道。json可以获得json模板。谢谢但我试图将“.json”添加到上面的JavaScript代码中,但仍然得到一个空的答案……您需要有json输出的模板。与index.html.erb为html呈现一样,index.json.jbuilder也将为json请求呈现。你可以在你的一个支架中看到json模板(或者生成一个支架并查看/my_scffold_name.json的工作原理)。Jbuilder是另一种DSL语言。我不知道。json可以获取json模板。谢谢但我试图将“.json”添加到上面的JavaScript代码中,但仍然得到一个空的答案……您需要有json输出的模板。与index.html.erb为html呈现一样,index.json.jbuilder也将为json请求呈现。您可以在您的一个框架中看到json模板(或者生成一个框架并查看/my_scffold_name.json works),Jbuilder是另一种DSL语言它工作了!只需将“url”更改为添加“.json”,一切正常。谢谢!成功了!只需将“url”更改为添加“.json”,一切正常。谢谢!