ajax调用中的历史状态


history states in ajax calls

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

所以我找到了history.pushStates,它帮助我通过点击链接来更改url,但它并没有创建历史状态,我的意思是我浏览器的后退按钮没有调用过去的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代码中处理pushstate,而所有其他代码似乎都很奇怪,就像它们不适用于ajaxcalls:/

您需要跟踪hashchange事件,并将您的状态推送到URL的窗口哈希部分。以下是关于将历史记录保存在动态页面上的一个很好的讨论。

你也可以发现这篇文章很有帮助。我个人已经为动态页面使用了hashchange插件(在这里详细介绍),它可以很好地保持历史同步,并支持动态内容的后退/前进按钮。