Rails 3:jQuery.get正在接收html响应而不是js

时间:2012-11-28 18:46:00

标签: jquery ruby-on-rails-3

我有一个名为action_1的动作。当用户输入/action_1时,会出现html响应。但是,我也有一个jQuery.get('/action_1')调用,应该收到一个js响应。我有一个action_1.js.erb文件,但不知何故,我得到的回复是html。我的行动中有以下respond_to阻止:

respond_to do |format|
  format.html
  format.js { render :layout => false }
end

发生了什么事?谢谢!

2 个答案:

答案 0 :(得分:1)

我会用

jQuery.getJSON('/action_1')

所以它请求application/json而不是text/html

答案 1 :(得分:1)

我发现了发生了什么:jQuery.get()默认情况下需要html响应。当操作中未指定任何内容时,Rails将使用html.erb文件应答呼叫,并且在提供我发布的两个选项(format.htmlformat.js)时也是如此。如果未指定任何内容且未找到js.erb,则会以html.erb回复,并且当指定它应以format.js而不是format.html回复时,它将回复jQuery.getJSON。在任何情况下,jQuery.getScript()默认需要json(并且不运行任何javascript)并且{{1}}可以使用javascript代码