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

How to perform submit button function in ColdFusion?

我是 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

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

既然你是 ColdFusion 的新手,我马上给你一些建议:

1.不要将表单提交到同一页面。

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

您的表单页面应响应 HTTP GET。 您的表单处理页面应该只响应 HTTP POST.

2。不要使用 CFFORM。

CFFORM 的功能是创建 JavaScript 验证和服务器端交互。这可以通过

等现代 JavaScript 库轻松完成

3。给你的表单元素一个 ID,以及一个 NAME.

这样可以在使用 JavaScript 时更轻松地引用表单元素。

4.不要将您的提交按钮命名为 "submit".

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

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

表单元素与函数同名会导致错误。

这里是 my_form.cfm<pre><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></pre>

5.你不需要使用 CFOUTPUT 除非你从服务器渲染数据。

这里是 my_form_action.cfm<pre><cfif structKeyExists(form, "my_form_submit")> <h3>Hi!<lt> </cfif></pre>

更好的是: <pre><cfif (cgi.request_method IS "post") AND (structKeyExists(form, "my_form_submit"))> <h3>Hi!<lt> </cfif></pre>

这是 Adrian 回答的这一部分的详细说明:

<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);

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