新足迹

 找回密码
 注册

精华好帖回顾

· 盖房记(2/3已经完成) (2008-7-3) 柯柯 · 平凡之路----塔斯马尼亚自驾:看得见的风景 (2014-8-18) autrant
· 房地产投资 - 之一:基础知识 (2006-11-13) 黑山老妖 · 会计找工经验分享+简历模板下载 (2007-11-18) zhanglei
Advertisement
Advertisement
查看: 1703|回复: 19

又是AJAX [复制链接]

发表于 2011-8-17 14:29 |显示全部楼层
此文章由 porcorosso 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 porcorosso 所有!转贴必须注明作者、出处和本声明,并保持内容完整
有个关于ajax的问题问问大家,但是有点难问,已经尽力解释了:

页面是动态的:
  1.     <a href="#">load ajax</a>
  2.     <div id="dynabox" style="display:none">no content</div>
  3.     <a href="#">Go to next page</a>
复制代码
ajax过后:
  1.     <a href="#">load ajax</a>
  2.     <div id="dynabox">This is new content from ajax</div>
  3.     <a href="#">Go to next page</a>
复制代码
然后,user点击Go to next page,页面显示新的一页。user过后从browser点击"Back"回去前一页,browser显示了:
  1.     <a href="#">load ajax</a>
  2.     <div id="dynabox" style="display:none">This is new content from ajax</div>
  3.     <a href="#">Go to next page</a>
复制代码
div变回collapsed状态。要怎样才可以retain div的状态?

[ 本帖最后由 porcorosso 于 2011-8-17 17:20 编辑 ]
Advertisement
Advertisement

2010年度奖章获得者

发表于 2011-8-17 14:38 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
那当然stateless的。

你要保留state,那你就要保留默个state值了。
你这个好象是用户点一下,tree 就expand了,要保持expand,那就种个cookie之类的。

特殊贡献奖章

发表于 2011-8-17 14:42 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
你是想说当用户点back的时候,不要display:none?还是要显示no content?

发表于 2011-8-17 14:50 |显示全部楼层
此文章由 porcorosso 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 porcorosso 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kr2000 于 2011-8-17 13:42 发表
你是想说当用户点back的时候,不要display:none?还是要显示no content?


我希望用户点Back后:
  1.     <a href="#">load ajax</a>
  2.     <div id="dynabox">This is new content from ajax</div>
  3.     <a href="#">Go to next page</a>
复制代码
就是用户去到第二页之前的状态

特殊贡献奖章

发表于 2011-8-17 15:20 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
用ajax的话,back按钮就不能用了
我的做法是自己写一个back按钮在页面里面。要back就点我这个,不然就会有unexpected结果。

发表于 2011-8-17 15:26 |显示全部楼层
此文章由 o2h2o 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 o2h2o 所有!转贴必须注明作者、出处和本声明,并保持内容完整
定时 query, 把 current page 的state 放入sesssion 里面?
ajax 来 check

browser 回退之后 那个 定时代码也会执行
能知道当前状态 并且恢复

这个做法有的傻 呵呵
Advertisement
Advertisement

发表于 2011-8-17 15:26 |显示全部楼层
此文章由 porcorosso 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 porcorosso 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kr2000 于 2011-8-17 14:20 发表
用ajax的话,back按钮就不能用了
我的做法是自己写一个back按钮在页面里面。要back就点我这个,不然就会有unexpected结果。


我的solution暂时也是这样,但是如果第一页的tree有很多brunch被打开的话非常难retain。。。

发表于 2011-8-17 15:27 |显示全部楼层
此文章由 porcorosso 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 porcorosso 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 o2h2o 于 2011-8-17 14:26 发表
定时 query, 把 current page 的state 放入sesssion 里面?
ajax 来 check

browser 回退之后 那个 定时代码也会执行
能知道当前状态 并且恢复

这个做法有的傻 呵呵


嗯,是个方法,但是有overhead / delay

发表于 2011-8-17 15:32 |显示全部楼层
此文章由 o2h2o 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 o2h2o 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 porcorosso 于 2011-8-17 14:26 发表


我的solution暂时也是这样,但是如果第一页的tree有很多brunch被打开的话非常难retain。。。

做整个树 数据结构去map 那个tree, 里面每一个 节点去 bit map
打开多少节点 都没关系吧
run 一下 就全能恢复

特殊贡献奖章

发表于 2011-8-17 15:48 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
用session也是个好办法
你可以把用户可操作的element都存在一个json里,点next page的时候保存到session
写一个function把json转化成页面的情况,每次load这个页面的时候就call这个function,调用session里这个json

原帖由 o2h2o 于 2011-8-17 14:26 发表
定时 query, 把 current page 的state 放入sesssion 里面?
ajax 来 check

browser 回退之后 那个 定时代码也会执行
能知道当前状态 并且恢复

这个做法有的傻 呵呵

发表于 2011-8-17 15:56 |显示全部楼层
此文章由 鱼羊鲜 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 鱼羊鲜 所有!转贴必须注明作者、出处和本声明,并保持内容完整
同城的做法是给url加hash,比如gmail就是这样的,比如gmail.com#inbox,jq也有类似的插件
Advertisement
Advertisement

发表于 2011-8-17 17:28 |显示全部楼层
此文章由 o2h2o 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 o2h2o 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kr2000 于 2011-8-17 14:48 发表
用session也是个好办法
你可以把用户可操作的element都存在一个json里,点next page的时候保存到session
写一个function把json转化成页面的情况,每次load这个页面的时候就call这个function,调用session里这个json


browser back的时候页面应该是不reload的
所以需要定时query

特殊贡献奖章

发表于 2011-8-17 17:32 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
是啊
哎,定时的我很不喜欢,这个是用户盯着的
如果突然页面变了,会吓坏用户的
应该有神马trigger类似的东西吧
原帖由 o2h2o 于 2011-8-17 16:28 发表

browser back的时候页面应该是不reload的
所以需要定时query

发表于 2011-8-17 17:34 |显示全部楼层
此文章由 o2h2o 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 o2h2o 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kr2000 于 2011-8-17 16:32 发表
是啊
哎,定时的我很不喜欢,这个是用户盯着的
如果突然页面变了,会吓坏用户的
应该有神马trigger类似的东西吧

不会吓坏吧
弄个 loading 的图标
google 也经常这样搞的

定时也可以优化
不用每次都ajax
很多都可以在 本地给拦截掉
本地执行一点if 语句应该性能损失还好吧

[ 本帖最后由 o2h2o 于 2011-8-17 16:36 编辑 ]

发表于 2011-8-17 18:04 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
有几个论坛采取定时poll的做法,让用户page update.

其实几个browser对back button的做法不统一,最新的几个一线browser back button全重起一个http request。

之前的版本就很乱,有的起,有的用cache,用cache的倒还好了,能貌似保持状态,重新http request的,可能就要做点工作,比如cookie,referer之类的逻辑。

好像很有之前用过一个3rd party的东西,强迫back之后起http,不用cache的东西,忘了叫什么名字了。

[ 本帖最后由 乱码 于 2011-8-17 17:10 编辑 ]

发表于 2011-8-17 18:45 |显示全部楼层
此文章由 o2h2o 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 o2h2o 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2011-8-17 17:04 发表
有几个论坛采取定时poll的做法,让用户page update.

其实几个browser对back button的做法不统一,最新的几个一线browser back button全重起一个http request。

之前的版本就很乱,有的起,有的用cache,用cache的倒还好了,能 ...

3rd 的东西 是在 客户端的 浏览器上面装的吗?
还是 server 上面 render 的 js?
如果是 render 的js
无法获知是否 click back button 了咋办
Advertisement
Advertisement

发表于 2011-8-17 18:53 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 o2h2o 于 2011-8-17 17:45 发表

3rd 的东西 是在 客户端的 浏览器上面装的吗?
还是 server 上面 render 的 js?
如果是 render 的js
无法获知是否 click back button 了咋办


它是类似于很久之前ajax control toolkit那样的server side control,但render出来还主要是js的东西,目的就是针对back button的,其他的不管。

不过是很老的东西了,不怎么提倡。

发表于 2011-8-17 22:45 |显示全部楼层
此文章由 porcorosso 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 porcorosso 所有!转贴必须注明作者、出处和本声明,并保持内容完整
感谢各位的意见,看来俺的问题还真是没有统一的解决方案。

俺最后往前踏了一步,建议上头让我弄成lightbox popup以显示nextpage的内容,呵呵被接纳了!

:si79 :si79

发表于 2011-9-15 12:15 |显示全部楼层

回复 porcorosso 1# 帖子

此文章由 800tiger 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 800tiger 所有!转贴必须注明作者、出处和本声明,并保持内容完整
你要做jquery mobile 吧。 google 一下 “jquery mobile back buttion”,就能解决。

发表于 2011-9-15 15:09 |显示全部楼层
此文章由 porcorosso 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 porcorosso 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 800tiger 于 2011-9-15 11:15 发表
你要做jquery mobile 吧。 google 一下 “jquery mobile back buttion”,就能解决。


不是的。。。

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部