我正在使用CakePHP在移动视图中开发一个应用程序,其中没有可以运行的Javascript代码。
我的情景:
在用户登录表单中,用户点击了提交按钮。但在提交数据和用户转到下一页之前,我会创建一个“中断”页面(呈现新视图)。在那里,包含“Facebook”和“不,谢谢”按钮。当他们点击“Facebook”时,他们将连接他们的Facebook帐户。但是,如果他们点击“不,谢谢”,登录将继续。
我的问题是,如何制作“不,谢谢”按钮?因为如果我使用<input type="submit">
按钮,则包含其数据的表单位于上一页中,因此不会单击此按钮。并且,如何存储POST数据,当点击“不,谢谢”按钮时,提交的数据是什么?
答案 0 :(得分:2)
您可以将数据存储在会话中,也可以将“无需感谢”按钮设置为表单的提交按钮,其中上一页的所有数据都存储在隐藏的表单字段中。
出于多种原因,我个人更喜欢使用会话,但由于你甚至在问这个问题,我猜你不熟悉会话数据的使用。
答案 1 :(得分:1)
一个更简单的问题是:
要在单页上制作这两种形式,但在用户登录表格和用户之间有很多垂直或水平空格。 “中断”页面,因此用户看到登录表单时看不到中断部分,尽管两者都在同一个<form></form>
标记内。然后,提交按钮只是指向同一表单的中断部分的链接。此链接很简单,<a>
标记带有内联链接,可以隐藏登录表单&amp;显示中断页面,无需javascript。类似于本页的转到测试部分A的链接
http://www.dynamicdrive.com/dynamicindex5/bookmarkscroll.htm
然后在中断部分,您可以使用真正的提交按钮,使POST返回以请求服务器。
[edit]
此解决方法基于用户滚动不够远的假设。因为大多数用户不会这样做,而是为他们制作1步骤,而不是2进程,这在移动设备上特别重要。如果有人这样做,那么空表单将被提交给服务器&amp;然后我们可以运行验证&amp;向用户返回错误。他/她可以填写完整的表格。所以这比将数据存储在session&amp;中更好。通过移动网络为每个用户登录提出两个POST请求,这通常是不可靠的。
答案 2 :(得分:0)
更好的解决方案可能只是将两种形式合并为一种形式。然后你不必发出2个http请求。也许您需要做的就是在另一个提交按钮旁边的原始表单“Login with FaceBook”中添加一个额外的按钮。