如何在ColdFusion中执行提交按钮功能?

时间:2016-02-11 16:42:24

标签: coldfusion cfform

我是coldfusion的新手, 请检查下面的代码

<cfif isDefined("form.submit")> 
 <cfoutput> 
     <h3>hi</h3> 
 </cfoutput> 
</cfif> 
<cfform action="#CGI.SCRIPT_NAME#"> 
  User Name:<cfinput type="Text" name="usr_nm"><br> 
  <cfinput type="Radio" name="access_flg" value="0">Admin
  <cfinput type="Radio" name="access_flg" value="1">User</br>
  <cfinput type="submit" name="submit" value="submit"><br> 
</cfform>

但是,当我点击提交按钮时,我希望结果为 hi

我没有看到hi消息,我的代码中有什么问题,任何人请帮助我

2 个答案:

答案 0 :(得分:4)

由于您是ColdFusion的新手,我会马上给您一些建议:

<强> 1。不要将表单提交到同一页面。

将表单提交到单独的页面进行处理。原因是,当您进入更高级的应用程序时,您需要限制页面/ URL仅响应适当的HTML动词。

您的表单页面应响应HTTP GET。 您的表单处理页面应仅响应HTTP POST。

<强> 2。不要使用CFFORM。

CFFORM的功能是创建JavaScript验证和服务器端交互。这可以通过现代JavaScript库轻松完成,如

第3。为表单元素ID以及NAME

这允许在使用JavaScript时更容易引用表单元素。

<强> 4。不要将您的提交按钮命名为&#34;提交&#34;。

如果您想使用JavaScript提交表单,则该函数为submit()

例如:$('#myForm').submit();

使用与函数相同的表单元素将导致错误。

此处my_form.cfm

<form id="myForm" name="myForm" action="my_form_action.cfm" method="post">
    User Name:<input type="Text" id="usr_nm" name="usr_nm"><br> 
    <input type="Radio" id="access_flg_0" name="access_flg" value="0">Admin
    <input type="Radio" id="access_flg_1" name="access_flg" value="1">User</br>
    <input type="submit" id="my_form_submit" name="my_form_submit" value="Submit"><br> 
</form>

<强> 5。除非您从服务器渲染数据,否则不需要使用CFOUTPUT

此处my_form_action.cfm

<cfif structKeyExists(form, "my_form_submit")> 
<h3>Hi!<lt>
</cfif>

更好:

<cfif (cgi.request_method IS "post") AND (structKeyExists(form, "my_form_submit"))> 
<h3>Hi!<lt>
</cfif>

答案 1 :(得分:1)

这是对阿德里安答案的这一部分的详细说明:

<cfif (cgi.request_method IS "post") AND (structKeyExists   form, "my_form_submit"))> 
<h3>Hi!</h3>
</cfif>

这是代码重用的候选者。在我们的一个应用程序中,我编写了一个自定义标记,它可以执行以下操作:

if (StructKeyExists(attributes, 'ScopeToCheck') is false)
attributes.ScopeToCheck = "form";

if (StructKeyExists(caller, attributes.ScopeToCheck) is false) 
Redirect = true;
else if (StructIsEmpty(caller[attributes.ScopeToCheck]) is true)
Redirect = true;
else
Redirect = false;
if (Redirect == true)
location(somewhere, false);

自定义标记方法适合我的情况。对于其他情况,可以将相同的逻辑放入返回true或false的udf中。然后,调用页面可以决定如何处理该信息。