ColdFusion-表单提交后表单变量为空

时间:2018-10-11 14:35:28

标签: forms redirect coldfusion submission cflocation

我的问题引用了此stackoverflow帖子中提供的以下问题/答案:Form Variables are not showing up after form submit. ColdFusion

我想在以上引用的帖子中发表评论,但我的声誉得分不足。我看到上面的Samuel Dealey的回答表明,使用cflocation或location.replace()可能会导致Form变量不显示。这正是我的情况。

我有一个简单的注册表提交。提交表单后,表单数据将发送到名为addCampaign.cfm的页面。 addCampaign.cfm包含将注册数据写入数据库的代码。将注册信息写入数据库后,我确认该信息已写入数据库。那时,如果注册成功,那么我会将用户重定向到特定页面,如果注册失败,则将其重定向到带有适当错误消息的注册表单页面。

我尝试将两者都用于重定向,并且尝试使用javascript location.replace(),都导致相同的问题。

我遇到的问题是:

1)重定向永远不会发生

2)我用来显示该结构,但它将其列为空

3)我删除了cflocation和location.replace()并可以验证我的表单元素确实存在于struct结构中。

4)考虑到表单结构显示为空,表单数据正在写入数据库,这很奇怪。

我不明白为什么将数据写入数据库时​​表单结构为何为空,而且我也不知道为什么重定向不起作用。有人可以澄清为什么会发生这种情况吗?

1 个答案:

答案 0 :(得分:1)

将此代码考虑在一个文件中

<cfif cgi.request_method EQ "post">
    <cfdump var="#form#">

    <!--- More importantly, DB inserts --->
</cfif>



<form method="post" action="?">
  <!--- Lots of other fields go here too --->

  <input type="submit" name="btnSubmit" id="btnSubmit" value="OK" />
</form>

如果采用这种方式,则不必担心通过某种重定向来推送数据。您已经在想要的页面上。 action="?"基本上意味着要提交到我已经参加过的同一字段。请注意,GETPOST上文件的行为是不同的。