【问题标题】:history states in ajax callsajax 调用中的历史状态
【发布时间】:2012-08-21 08:20:55
【问题描述】:

我正在使用 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 代码中处理 pushstates,并且所有其他代码看起来都很奇怪,就像它们不适用于 ajaxcalls:/

【问题讨论】:

  • 我不确定你想要做什么是可能的,你接近它的方式......

标签: php jquery ajax history pushstate


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多