Coldfusion 在按下按钮后执行cfquery还是在幕后操作页面?

Coldfusion 在按下按钮后执行cfquery还是在幕后操作页面?,coldfusion,Coldfusion,我的页面创建了一些随机变量来选择抽奖的奖品和获奖者,我想在获奖者点击按钮领取奖品后,将获奖者和他们的奖品写到一个表格中 问题是,我希望他们留在页面上,这样,如果没有人认领奖品,就可以再次挑选奖品 我能想到的最好的解决方案是cfinput按钮引用的操作页面,但我不希望操作页面打开,我只希望该页面上的cfquery在后台运行 以下是我的查询示例: <cfquery name="updateQuantity" datasource="christmas"> UPDATE PRIZES SE

我的页面创建了一些随机变量来选择抽奖的奖品和获奖者,我想在获奖者点击按钮领取奖品后,将获奖者和他们的奖品写到一个表格中

问题是,我希望他们留在页面上,这样,如果没有人认领奖品,就可以再次挑选奖品

我能想到的最好的解决方案是cfinput按钮引用的操作页面,但我不希望操作页面打开,我只希望该页面上的cfquery在后台运行

以下是我的查询示例:

<cfquery name="updateQuantity" datasource="christmas">
UPDATE PRIZES
SET QUANTITY = QUANTITY - 1
WHERE prize_ID = #prizeID#
</cfquery>

更新奖品
设置数量=数量-1
其中prize_ID=#prizeID#
我尝试将我的按钮设置为“提交”按钮,并使用cfif isDefined(“form.submit”)在同一页面上运行cfquery,但“提交”按钮刷新页面(我不想要),并写入下一个选中的赢家,而不是当前会话的prizeID:

<cfform>
<cfinput name="submit" type="submit" value="Claim Your Prize!" onClick="">
</cfform>

<cfif isDefined("form.Submit")>
<cfquery name="updateQuantity" datasource="christmas">
UPDATE PRIZES 
SET QUANTITY = QUANTITY - 1 
WHERE prize_ID = #prizeID# </cfquery>
</cfif>

更新奖品
设置数量=数量-1
其中prize#u ID=#prizeID#
prizeID是由随机选择的奖项决定的。

听起来似乎对你有用

一般来说,我认为AJAX请求是您所需要的。

听起来似乎适合您

一般来说,我认为AJAX请求是您所需要的。

Adam是正确的

虽然AJAX是您所追求的,但是ColdFusion的AJAX相关标记不是一个好办法

花点时间学习JQuery和AJAX(这并不太难,CF社区有一些很好的例子和指南),并正确地完成它;根据您的示例需求,您应该立即启动并运行

这样,您就可以正确地管理可能需要的任何日志记录和错误处理。祝你好运

亚当是对的

虽然AJAX是您所追求的,但是ColdFusion的AJAX相关标记不是一个好办法

花点时间学习JQuery和AJAX(这并不太难,CF社区有一些很好的例子和指南),并正确地完成它;根据您的示例需求,您应该立即启动并运行



这样,您就可以正确地管理可能需要的任何日志记录和错误处理。祝你好运

如果您不喜欢Leigh关于ajax的建议,可以将您的操作页面放入1像素的iframe中。您仍然需要使用js来更改父页面的内容。无论您采取何种方法,都要使用查询参数并确定变量的范围。首先。。。不要使用cfform。。。。第二不要使用cfajax的东西。我会使用ajax来实现这一点,但会使用jquery或其他东西。另外,如果你只是在查询中减少一个计数,有人可以在一秒钟内利用它,并将计数减少到零。@DanBracuk-这个建议是cherdt提出来的,不是我提出来的。我刚刚编辑了答案来设置链接的格式。这似乎是最近经常出现的,我最近从Ben Forta那里找到了一个关于它的不错的博客。读这个-。确保你读了它,因为标题有点误导。如果你不喜欢Leigh关于ajax的建议,你可以把你的动作页面放到一个1像素的iframe中。您仍然需要使用js来更改父页面的内容。无论您采取何种方法,都要使用查询参数并确定变量的范围。首先。。。不要使用cfform。。。。第二不要使用cfajax的东西。我会使用ajax来实现这一点,但会使用jquery或其他东西。另外,如果你只是在查询中减少一个计数,有人可以在一秒钟内利用它,并将计数减少到零。@DanBracuk-这个建议是cherdt提出来的,不是我提出来的。我刚刚编辑了答案来设置链接的格式。这似乎是最近经常出现的,我最近从Ben Forta那里找到了一个关于它的不错的博客。读这个-。确保你读了它,因为标题有点误导。不要使用ColdFusion的UI小部件。他们是废物。使用标准标记和JQuery(etc)。它有助于获得更好的结果,并且是一种可移植的学习技能。像CFFORM/CFAJAX这样的ColdFusion的UI向导在你的武库中不是有用的技能。请不要建议使用任何ColdFusion UI、JS、AJAX之类的东西。我自己不使用CFUI,但是当关于一种技术的每一个问题的答案都涉及到jQuery时,我觉得很烦人。有时,您希望能够使用其他技术解决问题。因此,一个只有ColdFusion的答案,以及一个指向一般答案类的不可知注释。不要使用ColdFusion的UI小部件。他们是废物。使用标准标记和JQuery(etc)。它有助于获得更好的结果,并且是一种可移植的学习技能。像CFFORM/CFAJAX这样的ColdFusion的UI向导在你的武库中不是有用的技能。请不要建议使用任何ColdFusion UI、JS、AJAX之类的东西。我自己不使用CFUI,但是当关于一种技术的每一个问题的答案都涉及到jQuery时,我觉得很烦人。有时,您希望能够使用其他技术解决问题。因此,一个只有ColdFusion的答案,一个指向一般答案类别的不可知论评论。虽然没有直接回答所问的问题,但我认为这是一个很好的答案。第一:停止使用CFFORM,尝试使用HTML和JQuery。第二:如果你在这方面有问题(有很好的记录,也不是很难,所以你应该没事)。。。修改您的问题或提出新问题,我们可以帮助您使用JQuery。在堆栈溢出方面,JS/JQuery社区也比CF人大得多。所以更容易获得帮助。现在回到这里有点晚了,但是可以使用jquery将我的变量发布或发送到我的操作页面,以便通过cfquery进行处理吗?或者jquery/ajax可以在按下按钮的情况下为我运行cfquery吗?我很难在所有ajax/jquery行话中准确地找到我需要的东西。虽然没有直接回答问题,但我认为这是一个很好的答案。第一:停止使用CFFORM,尝试使用HTML&J