我有两种形式。在form1中,必须输入名称和地址。如果缺少其中一个条目,则在执行服务器端验证后会显示错误消息。如果没有错误,则在form1中输入的结果应显示在form2中。成功验证后我执行了CFLOCATION,但是在form1中输入的数据不会传递给form2。我在表单(2)中得到消息txtName和txtAddress未定义。 服务器端验证成功后,如何将数据从第一个屏幕传递到另一个屏幕?任何建议都非常感谢。请在下面找到我的代码
Form1中
<cfif isDefined("form.btnSubmit")>
<cfif len(trim(#form.txtName#)) GT 0 and len(trim(#form.txtAddress#)) GT 0>>
<cflocation url="form2.cfm" addtoken="true">
<cfelse>
<H3>Name and address must be entered</H2>
</cfif>
</cfif>
<cfform action="form1.cfm" method="post">
User ID:<cfinput type="Text" name="txtName"><br>
Phone: <cfinput type="Text" name="txtAddress"><br>
<cfinput type="submit" name="btnSubmit" value="Validate"><br>
</cfform>
窗体2
<H2>You made the following entries </H2>
<p> Name: <cfoutput>#form.txtName#</cfoutput></p>
<p> Address: <cfoutput>#form.txtAddress#</cfoutput></p>
答案 0 :(得分:1)
cfloction不提交表单,只是将用户重定向到新页面。如果您希望第一个表单提交的数据显示在第二个表单上,请将您的第二个表单添加到您当前有cflocation的页面,然后在那里进行验证。如果存在所需数据,则使用数据填充第二个表单。否则,您可以将它们发回第一个表格。
答案 1 :(得分:1)
这个答案是对这个评论的回应,&#34;上面描述的方法,在form2中进行验证,这是进行服务器端验证的最佳实践吗?&#34;
表单字段的服务器端验证至少有三种方法。按照所需页数的顺序,我们将从1页方法开始。所有代码都在一页上。它是这样的:
if (a form was submitted)
validation code goes here
if (you had good data)
code to process form fields goes here
else
code for problems with form fields goes here
else // no form submitted
code to produce form goes here.
对于2页方法,PageWithForm.cfm提交给FormProcess.cfm。 FormProcess.cfm上的代码几乎与上面描述的完全相同。唯一的区别是
code to produce form goes here
变为
code for no form submitted goes here.
3页方法有PageWithForm.cfm,FormValidate.cfm和FormProcess.cfm。这似乎是你正在尝试的。问题是,FormValidate.cfm如何将值传递给FormProcess.cfm。至少有3种方法。
我最喜欢会话变量,因为它们可能会意外更改。我更喜欢新形式的url变量,但那只是我。
我描述的所有方法都有效。有时最好的一个取决于手头的情况,有时它根本不重要。我很少使用单页方法。我通常会使用两页方法。但那只是我。
答案 2 :(得分:0)
我认为你要问的是更接近这个:
<强> form1.cfm 强>
<cfparam name="url.message" default="">
<cfif url.message EQ 1>
<H3>Name and address must be entered</H3>
</cfif>
<cfform action="form2.cfm" method="post">
User ID:<cfinput type="Text" name="txtName"><br>
Phone: <cfinput type="Text" name="txtAddress"><br>
<cfinput type="submit" value="Validate"><br>
</cfform>
<强> form2.cfm 强>
<cfif len(trim(form.txtName)) EQ 0 and len(trim(form.txtAddress)) EQ 0>
<cflocation url="form1.cfm?message=1" addtoken="false">
</cfif>
<H2>You made the following entries </H2>
<p> Name: <cfoutput>#form.txtName#</cfoutput></p>
<p> Address: <cfoutput>#form.txtAddress#</cfoutput></p>
检查必填字段
在这个时代,有(至少)5种主要方法
<cfform>
强制执行必填字段每种方法都有权衡。你的问题似乎是方法5,但它也包括方法4的一些工作