• 请不要在回答技术问题时复制粘贴 AI 生成的内容
kongruxi
V2EX  ›  程序员

分步操作你怎样实现?

  •  
  •   kongruxi · Sep 1, 2011 · 5791 views
    This topic created in 5542 days ago, the information mentioned may be changed or developed.
    假设某个操作要分成三个步骤,每一步由用户填一些数据,到了最后那步才将用户在这三个步骤所填的所有数据提交到数据库

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

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

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

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

    电子商务类网站建议后台存进度(购物车模式),更有利用户体验。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5565 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 131ms · UTC 02:04 · PVG 10:04 · LAX 18:04 · JFK 21:04
    ♥ Do have faith in what you're doing.