Javascript 点击浏览器“;“后退”;按钮显示JSON而不是HTML(使用Rails和d3.js)
我正在Rails中使用d3.JSON回调生成一个图表,如下所示: 看法 控制器Javascript 点击浏览器“;“后退”;按钮显示JSON而不是HTML(使用Rails和d3.js),javascript,ruby-on-rails,json,charts,d3.js,Javascript,Ruby On Rails,Json,Charts,D3.js,我正在Rails中使用d3.JSON回调生成一个图表,如下所示: 看法 控制器 def index respond_to do |format| format.html do # return the HTML end format.json do # return the JSON end end end 一切正常。但是,当用户离开此图表,然后使用浏览器上的“后退”
def index
respond_to do |format|
format.html do
# return the HTML
end
format.json do
# return the JSON
end
end
end
一切正常。但是,当用户离开此图表,然后使用浏览器上的“后退”按钮导航回该图表时,会显示JSON而不是HTML
你能建议我如何解决这个问题吗
d3.json(window.location.pathname + ".json" + window.location.search.substring(0), function(json){
// generate chart
}
正如。所启发的那样,这是因为当您点击后退按钮时,浏览器正在为给定URL提供最后一次缓存的内容。在您的例子中,最后一个内容是AJAX(D3)请求的JSON 除了可接受的答案,您还可以尝试另一种方法-只需将
.html
附加到页面URL。您可以通过将此筛选器添加到控制器或ApplicationController
,使其自动化:
before_filter do
if request.format == :html && !params[:format]
redirect_to format: :html
end
end
Vary还有第三种标准方法:Accept
header,但这可能会导致一些问题,以及中描述的一些问题
before_filter do
if request.format == :html && !params[:format]
redirect_to format: :html
end
end