mon*_*guy 12 ajax jquery html5 ruby-on-rails
我有下一个问题,我有一个用ajax打开的页面,并像这样动态更改浏览器的URL
window.history.pushState(null, null, "/desktop/manage/add");
Run Code Online (Sandbox Code Playgroud)
因此,当我在"添加"页面并打开任何带有get/post请求的页面(甚至是另一个网站)并在浏览器中按"返回"按钮时,我得到的不是页面的完整html代码,而只是ajax部分.像这样:
如何解决这个问题?
PS如果我删除window.history.pushState(null,null,"/ desktop/manage/add"); 一切正常,但我需要更改浏览器的URL.
而我的ajax加载页面不是完整的HTML页面,只有像文本一样的ajax部分:
我读到了这个问题,并且通常是rails程序员将事件添加到后面点击按钮到application.js,如下所示:
$(window).on('popstate', function () {
$.get(document.location.href)
});
Run Code Online (Sandbox Code Playgroud)
但这只适用于用户不去谷歌(或任何其他网站),它只有当他们通过我的网站并点击后退按钮时才有效.
UPD2: /添加控制器
def addProduct
@categories = Market.where("depth = ? and title != ''", 0).reorder(:title);
@tags = UserTag.where(user_id: current_user.id).includes(:tags);
respond_to do |format|
format.html{render layout: "desktop_layout"}
format.js {}
end
end
Run Code Online (Sandbox Code Playgroud)
这是我的addProduct.js :(在点击后退按钮后在屏幕截图中看到的这个渲染文件)
window.history.pushState('page212', 'Mikee.kz', '/desktop/manage/add');
$("#rightBlock").html("<%= escape_javascript(ajax_section id:'page', :render => 'myadd') %>");
Run Code Online (Sandbox Code Playgroud)