表单提交后,表单变量不会显示。 ColdFusion的

时间:2014-04-05 01:38:35

标签: forms coldfusion

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

出于某种原因,当我点击提交&#34; btnSubmit&#34;没有出现在cfdump中。

<cfdump var="#form#">

1 个答案:

答案 0 :(得分:3)

很多事情可能导致它不会出现在您的表单中。我的罪魁祸首是:

  • 查看错误的文件/服务器。
  • 页面正在通过cflocation或其他方式重定向(javascript location.replace()或location.href = x) - 即使重定向将浏览器返回到同一页面,也会导致该问题。
  • onRequestStart
  • 中猜测表格变量会被进一步剥离
  • 一个名为&#34; variables.form&#34;的局部变量;已经创建并设置为更高层次的结构 - 不太可能,但我想有人可能会意外地写出类似<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中的某些内容可能会剥离名称为&#34; btnSubmit&#34;的变量形式变量。甚至任何带有字符串的表格变量&#34;提交&#34;在名称的任何地方。我不会期待它 - 我首先寻找其他原因,如cflocation标签。