2014-04-05 44 views
0
<form name="abc" id="abc" method="post" action="/test.cfm" enctype="multipart/form-data"> 
<input type="submit" name="btnSubmit" id="btnSubmit" value="OK" /> 
</form> 

由于某些原因,当我点击提交“btnSubmit”没有出现在cfdump中。表单提交后没有显示表单变量。 ColdFusion

<cfdump var="#form#"> 
+5

什么显示在cfdump中? –

+1

你使用'http:'而不是'file:'访问表单吗? –

回答

3

没有太多的东西可能导致它不会出现在您的表单中。我的罪魁祸首是:

  • 看着错误的文件/服务器。
  • 页面正在通过cflocation或其他方式(javascript location.replace()或location.href = x)重定向 - 即使重定向将浏览器返回到同一页面,也会导致该问题。
  • 表单变量被剥离出来的地方进一步上涨,我会在onRequestStart
  • 名为“variables.form”局部变量创建并设置为一个结构进一步上涨猜测 - 不太可能,但我想这是可能有人会一不小心喜欢写东西<cfset form = url />,这可能会导致该

通常,当这样的事情发生在我身上,在过去,我发现我一直在观察在浏览器中错误的文件。通常我会看到错误域名上的相同文件,例如查看生产服务器而不是开发服务器。

如果您结合您的代码段上方成一个单一的文件中像这样(test.cfm):

<cfdump var="#form#" /> 

<form name="abc" id="abc" method="post" action="test.cfm" enctype="multipart/form-data"> 
<input type="submit" name="btnSubmit" id="btnSubmit" value="OK" /> 
</form> 

这应该给你一些洞察到你的问题。请注意,我删除了表单操作中的前导斜杠/,以便此表单将自行发布。当我第一次查看这个模板时,我看到一个空的结构体(后面跟着按钮),因为我还没有在表单范围中添加任何东西。当我提交表单时,我会在结构中看到两个元素,fieldnames和btnSubmit。这是另一个很好的指标,如果你没有看到表单结构中的字段名,那么你的CFML页面可能没有收到表单提交。如果你知道你正在查看正确的页面,并且你已经提交了表单并且你还没有字段名称条目,那么我会开始寻找潜在的浏览器重定向。

您可能还想在同一个目录中添加一个空的Application.cfc,以确保没有应用程序干扰它。 onRequestStart中的某些东西可能会剥离出名称为“btnSubmit”的表单变量,或者甚至是名称中任何位置的字符串“submit”的任何形式变量。我不希望它 - 但我会寻找其他原因,如cflocation标签第一。