如何在 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 中。然后调用页面可以决定如何处理该信息。
我是 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 验证和服务器端交互。这可以通过
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 中。然后调用页面可以决定如何处理该信息。