分步操作你怎样实现?

2011-09-01 03:30:16 +08:00
 kongruxi
假设某个操作要分成三个步骤,每一步由用户填一些数据,到了最后那步才将用户在这三个步骤所填的所有数据提交到数据库

那么前两个步骤的数据你将怎样暂存起来,留到最后一步来使用呢?
用session?直接将前一步的数据隐藏在下一步的页面中?数据库开个临时表?

还有什么好方案?
4545 次点击
所在节点    程序员
13 条回复
Livid
2011-09-01 05:42:13 +08:00
用 session 或是 memcache 吧。
bhuztez
2011-09-01 10:14:31 +08:00
Django有FormWizard
bhuztez
2011-09-01 10:18:58 +08:00
之前看到过 Seaside 这个框架,好像能比较好地处理这个问题
moplay
2011-09-01 10:19:39 +08:00
我做过的,一次性加载全部表单,然后用隐藏表单分步
raptium
2011-09-01 11:14:29 +08:00
session 就够了
根据需要 session 的 backend 可以是 db 也可以是 memcached
shinyzhu
2011-09-01 11:15:21 +08:00
我也做过,同 @moplay 的方法。
mudone
2011-09-01 12:55:08 +08:00
同 @moplay 的方法。
kongruxi
2011-09-01 15:35:49 +08:00
@moplay 也就是说实际上只有一步,实际上只是通过JS来分步,让用户以为真的分步
Mrxx
2011-09-01 16:19:39 +08:00
如同游戏中的新手任务,每一步都用一个字段标示,只填写第一步就可以进,其他可以选择跳过,以后进行补充,避免用户流失
chloerei
2011-09-01 17:29:54 +08:00
小的session,大的内存cache
unstop
2011-09-01 17:47:46 +08:00
@kongruxi 我的解决方案就是,一部分成三步,用JS分开展示,Show当前这一步的时候就Hide其他部,用ID把表单分成三部分就行了。
kongruxi
2011-09-01 17:52:28 +08:00
@unstop 嗯,我就正打算用这个方案
darcy
2011-09-01 18:33:11 +08:00
这个看实际情况,是分步一定要一次连续完成;还是可以多次完成(我在公司填了A表单,回家填写B表单),来确定实现方案。

可以用前台JS隔离各个步骤( @moplay 做法 ),或者后台存储表单进度来实现( @Livid 做法 )。

需要注意的后台返回数据不合法后定位到相应的页面的相应字段;切换分步过程中的字段关系校验(有无新增,有无移除,及增删后对前后数据的影响等)。

电子商务类网站建议后台存进度(购物车模式),更有利用户体验。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/17586

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX