JS AJAX实现后退、前进和刷新 的解决方案与实现机制

提这个问题,就已经想到了可能会挨扁,这个问题太 ....

但一直一来,前端AJAX 我个人觉得始终存在3个问题是大家最喜欢问的...

  1. 实现后退、前进和刷新
  2. 如何实现长连接
  3. 如何兼容各浏览器

3 这个问题基本已经解决,在普遍前端开发框架繁荣的背后,这个问题悄然落水...

2 呢 已经被问了,1 我在德问 搜索,有2个类似的问题:

@浪际天涯@ajax前进和后退问题

@小白@Javascript 如何监听浏览器前进后退键改变url hash的方法?

但是 都缺少 刷新之后的解决方案...

我也经常关注前端js知识,看到 网上有相关的方案,但是对里面的实现机制并不怎么理解,请大家帮忙 讲解啊

冯义军
冯义军
14.03K
编辑于2013-03-01
评论 (2)链接2012-02-19 
  • 0 支持
    要考虑刷新的话。得加上cookie吧 – 小飞 2012-02-19
  • 0 支持
    那该问题是否可以立题为单纯刷新后的解决方案。 – 刘锡涛 2012-02-19

如果刷新需要保持停留在当前页面Ajax加载的信息的话,你只需要把和当前通过Ajax加载的内容保存到Cookie(或者是或者HTML5的localStorage里),然后当刷新后如果Cookie里已经保存了这些信息就直接从Cookie里取出来填充到当前页里,否则就通过Ajax去服务器端获取信息。

如果考虑到当前Ajax加载的内容过大,Cookie里无法保存,那也可以保存当前Ajax的相关信息(如:id值),然后当刷新的时候先去Cookie里取出这些相关信息,再把这些信息通过Ajax去传到服务器端取出内容后填充到当前页面元素中。

该答案已被锁定,无法对其进行评论,编辑及投票。
()
评论 (3)链接 • 2012-02-19
  • 0 支持
    是把js中传递的内容保存到cookie中? – 再也不上了 2012-02-20
  • 0 支持
    对呀,Cookie的最大存储量是4K,只要能放得下就行,不过最好是把当前Ajax的取数据的相关信息(如:id值)存到Cookie,然后刷新后再通过Ajax重新去取一次 – 浪际天涯 2012-02-20
  • 0 支持
    ajax虽然可以连接前后端,但是数据太大的话,是不提倡用的吧。 – 青蛙 2013-03-04

推荐看看 Ben Alman's hashchange plugin:
http://benalman.com/projects/jquery-hashchange-plugin/

具体使用案例请参考 http://www.dewen.net.cn/q/3859

该答案已被锁定,无法对其进行评论,编辑及投票。
()
评论 (0)链接 • 2012-07-31

在用js location.hash 接收解析锚标记里的传参就行了,用定时器检测hash的变化。
简单点说,就是实现通过hash传参调用你的功能,就达到你说的效果了。
兼容浏览器需要注意一些特殊字符替换,可以考虑escape后替换%为_.

该答案已被锁定,无法对其进行评论,编辑及投票。
()
评论 (0)链接 • 2012-07-31
德问是一个专业的编程问答社区,请 登录注册 后再提交答案