Ajax + back&前进按钮

时间:2011-09-21 12:31:17

标签: php javascript jquery ajax

我开始编写新的应用程序并希望将其设为完整的ajax样式:)

我正在使用Jquery来发出ajax请求。 主JS文件从按下的链接获取一些变量,并根据该链接转到一些php文件抓取一些数据返回并将所有内容放在预先准备好的html标签中。

这是我看到此应用的方式。

现在我已经找到了一些解决方案,使回复和前进按钮开始工作,但在这些解决方案中,他们的脚本会转到预定义的页面并根据一些常量ID读取一些数据所以我不喜欢它。

我想要的是......

  1. 如果用户按下前进按钮
  2. ,我需要一些代码来阻止浏览器重新加载页面
  3. 记住浏览器位置,所以如果我们处于状态'C'并且后退被按下它会给JS带来一些值为'B'的变量,然后JS转到php然后说'B'所以php会理解准备哪些内容。将内容返回给JS,JS更新页面,大家都很开心。
  4. 有解决方案可以这样工作吗?

2 个答案:

答案 0 :(得分:3)

我过去曾使用jQuery BBQ: Back Button & Query Library来达到这个目的。

具体来说,basic AJAX示例看起来像是你所追求的。 examples的其余部分也是最优秀的。

答案 1 :(得分:2)

我认为你应该看一下backbone.js http://documentcloud.github.com/backbone/。它有一个基于路由器的应用程序结构,其中每个路由实际上是一个不同的/ #ed ed url。

如果您有项目列表,则可以在路径/#itemsList中显示它,并且每个项目详细信息页面可以在/#items / id上。整个导航都是为您处理的,您所要做的就是调用某些函数或粘贴您想要在运行该URL时运行的代码。 (示例改编为http://documentcloud.github.com/backbone/#Router

var Workspace = Backbone.Router.extend({

  routes: {
    "help":                 "help",    // #help
    "item/:id":        "item",  // #item/myItemId
    "itemList": "list"   // #itemList
  },

  help: function() {
    ... show help
   },

  item: function(id) {
    ... show single item with jQuery, Ajax, jQuery UI etc
  },

  itemList: function(){
    ... show item list with jQuery, jQuery UI etc.
  }

});

www.myapp.com/#help - >帮助代码

www.myapp.com/#item/32 - > ID为32的项,在item(id)函数中捕获,并通过Ajax获取数据

www.myapp.com/#itemList - >所有项目的列表,您可以在其中为每个项目生成#item / id的链接。