【问题标题】:Trigger Ajax function with back/forward actions?使用后退/前进动作触发 Ajax 功能?
【发布时间】:2011-03-06 16:48:29
【问题描述】:

首先,我要感谢大家阅读本文并回答我的问题。迄今为止所提供的帮助非常宝贵,感谢所提供的帮助,我成为了一名更好的程序员。

到手头的问题。我担心这有点粗糙,但下面的脚本大部分都有效。

问题在于,虽然历史记录被存储,但当用户返回或前进时,页面并没有改变。你知道我可以做些什么来修改它以便触发 go 函数吗?

$(document).ready(function(){

 $("a").click(function() {
  if (strpos($(this).attr('href'), 'mob.php') !== false) {
   window.location = url($(this).attr('href'));
   go(idToPath($(this).attr('href')));
   return false;
  }
 });
});

function go(num) {
 if (num != undefined) {
  $.ajax({
   url: "mob.php?p="+num+"&logo=0",
   cache: false,
   success: function(html){
    $("#ajax").html(html);
   }
  });
 }
}

$.history.init(function(u) {});
var page = 4;
var id = window.location.hash.substr(1);
if (id != '' && page != id) {
 go(id);
}

【问题讨论】:

    标签: jquery ajax browser-state


    【解决方案1】:

    将 ajax 添加到浏览器状态的混合会导致许多复杂的问题,如下所述: How to show Ajax requests in URL?

    jQuery Ajaxy 项目是使用 ajax 和浏览器状态的良好开端。

    【讨论】:

      【解决方案2】:

      没有这样的事件。

      但是你可以使用一些历史插件,看看它是如何在那里完成的: http://www.mikage.to/jquery/jquery_history.html

      【讨论】:

        【解决方案3】:

        嗯,我不确定这个问题是否有任何固定的解决方案。

        但我想出了一个临时解决方案。

        1. 在通过 Ajax 导航的每个页面的开头,我都会存储页面信息和其他参数。喜欢$_SESSION['page'][] = "book.php?cat=1"
        2. 将函数附加到浏览器的历史事件并调用自定义函数来获取所需的 URL 并重定向到它。

        这不是一个很好的答案,但这应该给你一个粗略的想法。 :)

        【讨论】:

          猜你喜欢
          • 2011-03-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-04-30
          • 1970-01-01
          • 1970-01-01
          • 2014-02-26
          • 2023-02-07
          相关资源
          最近更新 更多