使用后退/前进动作触发Ajax功能?

时间:2010-06-22 08:07:17

标签: jquery ajax browser-state

首先,我要感谢大家阅读并回答我的问题。到目前为止给予的帮助非常宝贵,而且由于我给予的帮助,我是一个更好的程序员。

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

问题在于,在存储历史记录时,当用户前进或后退时,页面不会改变。您是否知道我可以做些什么来修改它以便触发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);
}

3 个答案:

答案 0 :(得分:1)

没有这样的事件。

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

答案 1 :(得分:0)

好吧,我不确定这个问题的任何固定解决方案。

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

  1. 在通过Ajax导航的每个页面的开头,我存储页面信息和其他参数。像$_SESSION['page'][] = "book.php?cat=1"
  2. 将一项功能附加到浏览器的历史事件中,并调用自定义函数以获取所需的URL并重定向到该页面。
  3. 这不是一个很好的答案,但这应该给你一个粗略的想法。 :)

答案 2 :(得分:0)

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

使用ajax和浏览器状态,jQuery Ajaxy项目是一个很好的开始。