我有一个名为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
发生了什么事?谢谢!
答案 0 :(得分:1)
我会用
jQuery.getJSON('/action_1')
所以它请求application/json
而不是text/html
答案 1 :(得分:1)
我发现了发生了什么:jQuery.get()
默认情况下需要html响应。当操作中未指定任何内容时,Rails将使用html.erb
文件应答呼叫,并且在提供我发布的两个选项(format.html
和format.js
)时也是如此。如果未指定任何内容且未找到js.erb
,则会以html.erb
回复,并且当指定它应以format.js
而不是format.html
回复时,它将回复jQuery.getJSON
。在任何情况下,jQuery.getScript()
默认需要json(并且不运行任何javascript)并且{{1}}可以使用javascript代码