Ajax 后退按钮功能

Ajax back button functionality

我不知道如何使用 historyAPI 或 history.js 请帮忙!我的代码是这样的...

我想要的是显示一组按钮,用户单击其中一个按钮,然后显示另一组按钮,ajax 在第一组按钮之间进行调用,使用 [=19= 隐藏]...

$(".button1").click(function(){
    $('#div2').css("display","none");
    $('#div1').css("display","none");
    val1 = $(this).attr("value");
    query = 'phone.php?val1='+val1;
    myQuery();
    $('#div2').css("display","block");
});

$(".button2").click(function(){
    val2= $(this).attr("value");
    $("#div2").css("display","none");
    query = 'phone.php?val1='+val1+'&val2='+val2;
    myQuery();
   $("#div3").css("display","block");
});

function myQuery() {
    if (window.XMLHttpRequest) {
        xmlHttp = new XMLHttpRequest();
    } else {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlHttp.onreadystatechange = function(){
        if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
        document.getElementById("sql").innerHTML = xmlHttp.responseText;
    }
}

xmlHttp.open('GET', query, true);
xmlHttp.send();
}

当我按下后退按钮时,它会转到以前的网站...所以我当然希望它显示第一组按钮并显示更新前的内容。

当使用Ajax时,您不会在浏览器历史记录中放置任何内容,这就是为什么当您按下后退按钮时,您会返回到上一个记录的页面。 如果您希望记录您的 Ajax 调用,就像您要转到一个新页面一样,您需要在历史堆栈上推送一个新状态。

if ( typeof(window.history.pushState) == 'function' ) {
    var stateObj ={
        title: title,
        url: query,
    } ;
    window.history.pushState (stateObj, title, query) ;     
}

您还需要实现一个 onpopstate 事件函数 hide/show 您的按钮基于用户返回历史记录后变为活动状态。

window.onpopstate =function (event) {
    alert ("location: " + document.location + ", state: " + JSON.stringify (event.state)) ;
    // based on the event.state values, restore buttons visibility here...

} ;