ajax调用中的历史状态

时间:2012-08-21 08:20:55

标签: php jquery ajax history pushstate

我正在使用jquery ajax调用通过单击链接来更改div中的内容,但我的网址始终相同,我的意思是通过单击链接只是内容更改而不会更改。

所以我找到了history.pushStates,它帮助我通过点击链接更改了网址,但它没有创建历史状态,我的意思是我的浏览器的后退按钮没有调用过去的ajaxcalls。

这是我的javascript代码。

function PostFunc(id,page,name)
{
$.ajax
({
type: "POST",
url: "doAjax.php",
data: "mode=viewtopic&threadid="+id+"&page="+page,
success: function(msg)
    {
    $("#entrylist").ajaxComplete(function(event, request, settings)
        {
        $("#entrylist").hide().html(msg).fadeIn();
        counter = 0;
        /* TODO : LEARN PUSHSTATES */
        var replaced = name.replace(/ /g,"+");
        history.pushState(null, null,"viewtopic.php?title="+replaced);
        });
    }
});

你们..问题很快我不知道如何在我的jquery代码中处理pushstates,而且所有其他代码看起来都很奇怪,就像它们不适合ajaxcalls:/

1 个答案:

答案 0 :(得分:0)

您需要跟踪hashchange事件并将状态推送到URL的窗口哈希部分。 Here是关于在动态网页上保留历史记录的良好讨论。

您还可以找到有用的this帖子。我个人使用hashchange插件(detailed here)用于动态页面,它可以很好地保持历史同步并支持动态内容的后退/前进按钮。