首页 新闻 会员 周边 捐助

异步请求中浏览器后退/刷新功能

0
悬赏园豆:20 [已解决问题] 解决于 2013-08-13 15:23

项目中大量使用异步请求,用户控件,页面元素也是动态生成的,导致浏览器的后退,刷新功能有问题,怎么弄呢?急.......

彭满意的主页 彭满意 | 初学一级 | 园豆:103
提问于:2012-10-08 16:54
< >
分享
最佳答案
1

目前通用的做法(腾讯/人人/谷歌等)是将ajax请求放在#后面。比如初始页面地址是:

http://www.mysite.com/main

用户点击页面某处,发起了ajax请求(比如查看一篇博客)

http://www.mysite.com/main#/blog/123

ajax实际请求的是/blog/123(查看id为123的博客),由于地址栏发生了变化,因此浏览器的前进后退按钮能正常工作。又由于地址栏变化的是#之后的部分,因此不会影响其他地方。jquery好像自带一些支持的,你自己也可以写一个,不难。

收获园豆:20
水牛刀刀 | 大侠五级 |园豆:6350 | 2012-10-08 16:59

浏览器记录了当前的URL ,但是当我后退的时候,由于页面都是异步请求,而且参数都是在JS中保存,所以数据不知道能不能回去,这个是核心问题.如果只是静态页面就很好弄,关键是有大量的数据.

彭满意 | 园豆:103 (初学一级) | 2012-10-08 17:30

@彭满意: 我说了啊,把数据放在#后面啊。你看看qq空间或者人人网就知道了。

水牛刀刀 | 园豆:6350 (大侠五级) | 2012-10-08 17:34
其他回答(1)
0

很多成熟的mvc框架都提供router的功能,贴一个backbone的http://backbonejs.org/#Router

疯骚的程序员 | 园豆:308 (菜鸟二级) | 2012-10-09 18:02

这个是做什么用的呢?

支持(0) 反对(0) 彭满意 | 园豆:103 (初学一级) | 2012-10-16 10:23

@彭满意: 用来解决你说的问题的,做浏览器端的路由,高级浏览器用pushstate,低级浏览器用hash,当然也可以都用hash

支持(0) 反对(0) 疯骚的程序员 | 园豆:308 (菜鸟二级) | 2012-10-16 10:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册