0

我正在使用 CakePHP 在移动视图中开发一个应用程序,其中没有 Javascript 代码可以运行。

我的场景:

在用户登录表单中,用户单击提交按钮。但在提交数据和用户进入下一页之前,我制作了一个“中断”页面(呈现一个新视图)。在那里,包含“Facebook”和“不,谢谢”按钮。当他们点击“Facebook”时,他们将连接他们的 Facebook 帐户。但是,如果他们点击“不,谢谢”,登录会继续。

我的问题是,如何制作“不,谢谢”按钮?因为如果我使用<input type="submit">按钮,包含其数据的表单在前一页,所以不会点击这个按钮。以及,如何存储 POST 数据,以及当单击“不,谢谢”按钮时,提交的数据?

4

3 回答 3

2

您可以将数据存储在会话中,也可以将“不,谢谢”按钮设置为表单的提交按钮,其中上一页的所有数据都存储在隐藏的表单字段中。

就个人而言,出于多种原因,我更喜欢使用会话,但是由于您甚至在问这个问题,我猜您不熟悉会话数据的使用。

于 2012-10-29T05:23:12.803 回答
1

一个更简单的问题是:要在单个页面上制作这两个表单,但在用户登录表单和“中断”页面之间有很多垂直或水平空间,所以看到登录表单的用户看不到中断部分,尽管两者都在同一个<form></form>标​​签内. 然后,提交按钮只是指向相同表单的中断部分的链接。这个链接是一个简单的<a>带有内联链接的标签,它可以隐藏登录表单并显示中断页面,而不需要 javascript。类似于此页面上转到测试部分 A 的链接

http://www.dynamicdrive.com/dynamicindex5/bookmarkscroll.htm

然后在中断部分,您可以使用一个真正的提交按钮,该按钮使一个 POST 返回请求服务器。

[编辑]

此解决方法基于用户滚动不够远的假设。因为大多数用户不会,所以将其设为对他们来说是 1 步流程,而不是在移动设备上特别重要的 2 流程。如果有人这样做,那么空表单将被提交到服务器,然后我们可以运行验证并向用户返回错误。他/她可以填写完整的表格。所以这是一个很好的解决方法,比将数据存储在会话中并为每个通过移动网络登录的用户发出两个 POST 请求更好,这通常是不可靠的。

于 2012-10-29T05:32:56.910 回答
0

更好的解决方案可能是将两种形式合并为一种形式。然后您不必发出 2 个 http 请求。也许您需要做的就是在另一个提交按钮旁边的原始表单“使用 FaceBook 登录”中添加一个额外的按钮。

于 2012-10-29T05:49:34.907 回答