表单变量没有定义?

jfi*_*bow 1 coldfusion

我有一个表单,我想检查一个框,并从该记录中获取emp_id仅来自检查的记录(name ="add#cnt#")

<cfform method="post" action="approver.cfm" >   
    <cfoutput>
    <input type="hidden" name="txtTotalRecords" value="#totalEmployees.recordcount)#">
    </cfoutput>
  <table >
 .....                                                                
        <cfoutput query="totalEmployees">          
        <tr >                                            

        <cfset cnt= cnt+1>  
        <td><cfif #approver# eq 1>Yes <cfelse>No </cfif></td>
        <td><input type="checkbox"  name="add#cnt#" value="yes"></td>   
        <td><input type="hidden"  name="emp_id#cnt#" value="#emp_id#"></td>   
        </tr>
          </cfoutput> 
      <cfoutput>
      <input type="hidden" name="f_cnt" value="#cnt#">        
      </cfoutput>

        </table>

         <p><input type="submit"  name="Submit" value="submit" ></p>    
 </cfform>
Run Code Online (Sandbox Code Playgroud)

为了测试目的,一旦我提交表格即可选择记录,最终我将更新表格.

但是一旦我提交表单,我就会收到错误:变量form.add1未定义.

<cfloop from="1" to ="#form.f_cnt#" index="j">
    <cfset emp_id =#evaluate("form.emp_id#j#")#>
    <cfset add =#evaluate("form.add#j#")#>
    <cfdump var=#emp_id#>
</cfloop>
    <cfif emp_id neq "" and add neq "">
       <cfquery name="output" datasource="phonelist">
          select * from employee where emp_id=#emp_id#
       </cfquery>
    </cfif>
<cfdump var=#output#>
Run Code Online (Sandbox Code Playgroud)

解决这个问题的最佳方法是什么?

如何选择仅经过检查的记录?

我做了一个http://jsfiddle.net/j65wh9hz/ ,以便能够查看我的所有代码.

Tri*_*Lee 9

如果未选中复选框,则不会随表单一起提交.通过执行以下操作检查其存在:

<cfloop from="1" to ="#form.f_cnt#" index="j">
   <cfif structKeyExists(form, "add#j#")>
      <cfset checkbox = form["add#j#"] />
      <!--- do stuff --->
   </cfif>
</cfif>
Run Code Online (Sandbox Code Playgroud)

  • 另外,请注意上面的代码如何通过使用关联数组表示法来避免`evaluate()`.很少需要Evaluate(). (5认同)