我是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消息,我的代码中有什么问题,任何人请帮助我
答案 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中。然后,调用页面可以决定如何处理该信息。