每次完成一个部分时提交表单的最佳方式

问题描述:

我有一个多部分表单的要求,我想应用一些巧妙的提交逻辑。这里的理念,形式有3个步骤:每次完成一个部分时提交表单的最佳方式

  1. 个人联系方式
  2. 报价详情
  3. 最终意见

正如任何好的营销人员,我不想失去对任何数据事件,用户没有完成这个(有点长)形式的所有步骤。 因此,我想要做的是有形式提交每个步骤完成。因此,如果用户退出,我们仍会捕获完成的步骤中的详细信息。

理想我实际上并不希望有表单提交3时间,如果它要简单的电子邮件的脚本,我们希望通过为每个“完整”提交得到3个结果。 所以我试图找到一些聪明的方式来存储数据,并在一段时间后提交或沿着这些线。

我打算在HTML中构建这个& JavaScrip(&如果需要在PHP中)。任何人都可以建议最好的路线来实现这一点(从过去的经验等),然后我得到我的双脚湿!

感谢您的时间&任何建议

+0

分页+ cookies/localStorage +评论页面 – zzzzBov

+0

将每一步都放在单独的表格中,每一步完成后使用ajax提交。 – Birey

+0

我用javascript制作了一个多部分表单,一旦它们完成,我就从视图中隐藏了部分,并在最后一页显示了提交按钮。 – bozdoz

最好的方式实现这一目标是有三个独立的形式,每个页面。在提交每个表单后,使用jQuery向服务器上的PHP页面发出post()请求,其中包含serialized()表单数据。然后这个PHP页面将表单的内容存储在数据库*稍后检索。

如果ajax请求成功,显示表单的下一页,否则显示错误,告诉用户发生了什么。

进一步阅读.post().serialize()

你需要存储调查的临时结果服务器支持。当用户提交下一部分时,您将简单地向查询附加新答案。诀窍在于检测被放弃的查询,但我认为如果调查不会在24小时内完成,则可以安全地假定用户关闭了浏览器,并且不会追加任何未来的数据。

您必须在服务器上实现持久性,SQL数据库是PHP的最佳选择 - 数百万个示例。

如果我理解你的问题正确,那么你正试图在同一页向导的行为,在这种情况下,你可以使用有三种形式。

一个部分完成后做一个Ajax调用并保存填写的数据在某些临时数据库表,最后当用户完成,你可以整理临时表中的数据,并在主表坚持形式。

如果用户没有完成所有步骤,那么您可以在一段时间后清理临时表,或者您可以在某个“不完整”表中移动它以防万一您想要执行一些BI数据。

我会序列化响应并将其存储在数据库{id,stage1 data,stage2 data,last_entry_timestamp}中。

假设验证在每个阶段存储数据之前完成,

  • 第1阶段,如果一个项目存在我会检查,如果没有创建一个新条目,并存储序列化的stage1信息并设置时间戳,否则检索阶段1的信息。 (后/前)
  • 阶段2如果没有设置,我会更新创建的条目与序列化stage2信息和设置时间戳,否则检索和更新。
  • 阶段3我会检索阶段1和阶段2的信息,并提交。然后我会删除该条目。

最后我会设置一个cron作业来查看超过X小时的所有条目,提交它们并删除条目。