1

我想创建一个两步电子邮件注册表单,它将提交给 Aweber(或任何这不是标准功能的公司)。

这个想法是首先询问必要的最少信息 - 姓名,电子邮件 - 然后在第二步,尝试获取用于分割列表的其他信息。例如,您更喜欢奶制品还是肉类?.

挑战在于,如果用户没有完成第二步,我仍然想将他们添加到电子邮件列表中,只包含他们的部分数据......但我可能没有用户操作(例如:单击按钮)此时,触发表单提交。

你会如何解决这个问题?我认为 AJAX 是解决方案的一部分,但由于我仍在学习 PHP,因此最好使用 PHP 解决方案。(除了它们的存在,我基本上对 JavaScript/AJAX 一无所知。)

4

2 回答 2

1

您必须提交第一步(所需数据;可能使用 AJAX,但不一定)并保存到数据库。如果/当步骤 2 完成时,您将使用其他数据更新数据库。

于 2013-05-30T19:41:20.077 回答
0

如果用户没有做某事,您正在寻找提交,这本身并不是一个可捕获的事件!但是,有一个解决方案。(注意我不知道“Aweber”是什么,但我假设您必须通过 API 一次性将所有数据发送给它)。

从创建第一个表单开始,并使用时间戳将其保存到数据库中。不要在外部提交任何东西——只需重定向到第二步,如果第二步完成,将第二个信息块保存到本地数据库,然后将所有内容提交到 API(您需要检索第一个当然,您的数据库中的数据块)。

现在,您将开始构建第二步未完成的一组记录。要提交这些,请运行调度程序(例如cron)以检测 10 分钟(或您认为放弃第二步的任何时间)后未提交的任何记录。对于每条这样的记录,只需将其与第一块数据一起提交给 API,然后将其标记为已发送,因此非常缓慢的用户无法完成第二步。如果您认为合适,则必须明确防止在第二个表单中延迟提交(因为如果您不能再远程提交数据,则接受数据毫无意义)。

您会注意到 AJAX 不是该提案的一部分,我不确定是否会推荐它。这只能在第二页上使用计时器事件,但如果用户在计时器触发之前关闭第二页,则您的事件将永远不会触发,并且不会提交用户的数据。

于 2013-05-30T20:04:56.720 回答