当我使用某些参数(例如?page = 2)手动更新网址时,pjax将无法识别该网址:
window.history.replaceState(null,document.title,"?page=2");
我也尝试过使用pjax
$.pjax({url: "?page=2", container: (container || '#null'), replace: true, dontRequest: true})
(注意我添加了dontRequest参数,所以我可以做一个“假的”pjax调用,它实际上不会触发.ajax,但仍会更新url,但没有成功)
要在实际网站上复制此内容:
注意没有任何反应......现在再次按回来,你会发现它有效。这是因为我使用replaceState使用?p = 2更新URL。我如何使这项工作能够识别这些? params ...我尝试定制pjax但没有成功。
答案 0 :(得分:0)
在我看来,PJAX只添加路径,而不是完整的url状态。这就是你遇到这个问题的原因。
如果您使用的是Rails,那么一定要尝试Wiselinks https://github.com/igor-alexandrov/wiselinks。它是一种用于浏览器状态管理的瑞士军刀。以下是一些详细信息:http://igor-alexandrov.github.io/blog/2013/07/11/the-way-to-wiselinks-1-dot-0/。
Wiselinks更好地处理了这个和许多其他情况。
答案 1 :(得分:0)
这是一个古老的问题,但我会回答碰巧碰到这里的人。
当您在页面上手动使用pushState或replaceState时,Pjax无法正常工作。当遇到这种状态时,它什么都不做。因此,当您按后退/前进按钮到这样的页面时,pjax:popstate事件不会触发,也没有任何反应。
解决方法是使用$ .pjax.state作为pushState和replaceState的状态对象参数
history.pushState($.pjax.state, null, href)
和
history.replaceState($.pjax.state, null, href)