ColdFusion HTML表单错误Element element_name在FORM中未定义,即使表单也是如此。范围在标签中添加

时间:2016-01-04 22:32:26

标签: javascript html forms coldfusion

我有.cfm个文件。这是在另一个.cfm文件的“提交”按钮上调用的。但提交按钮单击会显示错误:Element TYPE_QUERY is undefined in FORM. error occurred in line 3。正如您所看到的,我在标记中添加了.form范围:

<cfset sdate = Form.s_date>
<cfset edate = Form.e_date>
<cfset type_query = Form.type_query>
<cfif type_query eq "query1">
    <cflocation url="query1.cfm?fdate=#sdate#&edate=#edate#">
<cfelseif type_query eq "query2">
    <cflocation url="query2.cfm?sdate=#sdate#&edate=#edate#">
    <cflocation url="report_test.cfm">
</cfif>

1 个答案:

答案 0 :(得分:3)

一些事情:

  1. 您不需要根据表单范围变量定义新变量,只需引用表单范围变量。
  2. 验证Alex建议存在form.type_query。 (您是否有名为type_query的表单字段?)
  3. 如果没有,则抛出错误。
  4. 确保您对用户输入进行上下文编码,以防止跨站点脚本攻击(在这种情况下为encodeForURL()。)
  5. 您一次只能呼叫一个cflocation,您永远不会重定向到report_test.cfm
  6. 如果type_query既不匹配“query1”或“query2”,也会抛出错误或重定向到其他页面。
  7. 可选:为type_query设置默认值。
  8. <--- Optional (7):
    <cfparam name="form.type_query" type="string" default="query1">
    --->
    
    <cfif structKeyExists(form, "type_query")>
    
        <cfif compareNoCase(form.type_query, "query1") EQ 0>
            <cflocation url="query1.cfm?fdate=#encodeForURL(form.s_date)#&edate=#encodeForURL(form.e_date)#">
        <cfelseif compareNoCase(form.type_query, "query2") EQ 0>
            <cflocation url="query2.cfm?sdate=#encodeForURL(s_date)#&edate=#encodeForURL(e_date)#">
        <cfelse>
            <cfthrow type="Application" message="Invalid value for the form variable 'type_query'.">
        </cfif>
    
    <cfelse>
    
        <cfthrow type="Application" message="The variable 'type_query' was not part of the form data.">
    
    </cfif>