我通过ajax请求动态加载内容,并在发送请求后使用js history.pushState
更新浏览器搜索栏。
在此js文件中,我也使用URLSearchParams从更新的url获取参数,因此刷新页面后,应该使用这些参数相应地加载内容。
更新内容的代码
let searchParams = new URLSearchParams(window.location.search);
let id = 0;
let oc = false;
if(searchParams.has("a") && searchParams.has("oc")){
id = searchParams.get("a");
oc = searchParams.get("oc");
}
getList(id, oc, "#forumContents");
使用ajax请求从php获取信息的getList函数:
function getList(id, oc, p){
$.ajax({
method: 'json',
url: "/action.php?method=json&p=getList&a="+forumID+"&oc="+openContent
}).done(function(data) {
data = JSON.parse(data);
if(:something:){
history.pushState("s", "", "?a="+forumID+"&oc="+openContent);
}
搜索棒成功更新,但是浏览器后退按钮仅工作一次,第二次按下该按钮后页面不会更新,但是如果快速且足够次地按下浏览器后退按钮,它将同样起作用。