V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kongruxi
V2EX  ›  程序员

分步操作你怎样实现?

  •  
  •   kongruxi ·
    HungYuHei · 2011-09-01 03:30:16 +08:00 · 4644 次点击
    这是一个创建于 4822 天前的主题,其中的信息可能已经有所发展或是发生改变。
    假设某个操作要分成三个步骤,每一步由用户填一些数据,到了最后那步才将用户在这三个步骤所填的所有数据提交到数据库

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

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

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

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

    电子商务类网站建议后台存进度(购物车模式),更有利用户体验。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5552 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 06:53 · PVG 14:53 · LAX 22:53 · JFK 01:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.