Jquery 我应该如何使用ajax post将变量发送到coldfusion操作页面?

Jquery 我应该如何使用ajax post将变量发送到coldfusion操作页面?,jquery,ajax,coldfusion,Jquery,Ajax,Coldfusion,我的页面从页面上的cfquery生成随机变量,用作随机奖金和随机获奖员工 <cfset prizeID="#prize.prize_ID[variables.prizeRow]#"> 我试图找到一种替代方法,使用Ajax将变量(prizeID、winnerID等)发送到服务器 这是我得到的最接近的结果: function Claim() { $.ajax({ type: "POST", url: "claim

我的页面从页面上的cfquery生成随机变量,用作随机奖金和随机获奖员工

<cfset prizeID="#prize.prize_ID[variables.prizeRow]#"> 
我试图找到一种替代方法,使用Ajax将变量(prizeID、winnerID等)发送到服务器

这是我得到的最接近的结果:

    function Claim() {
        $.ajax({
            type: "POST",
            url: "claim.cfm",
            data: { claimedPrize: "#prizeID#", claimedEmployee: "#employeeID#"}
        }).done(function( ) {
            alert( "claimed" );
        })
    }
目前,我正在通过点击按钮调用函数来“领取”奖品

以下是关于我的索赔的一个问题。cfm:

    <cfquery name="updateQuantity" datasource="christmas">
    UPDATE PRIZES
    SET QUANTITY = QUANTITY - 1
    WHERE prize_ID = [ID sent from the client needs to go here]
    </cfquery>

更新奖品
设置数量=数量-1
其中prize_ID=[从客户端发送的ID需要转到此处]

您的问题就这么简单:

 WHERE prize_ID = [ID sent from the client needs to go here]
?

在这种情况下,当您使用AJAX发表文章时,随AJAX请求发送的数据将作为表单字段传递,并最终进入“表单”范围,因此您需要将该代码更改为以下内容:

WHERE prize_ID = <cfqueryparam value="#form.claimedPrize#" cfsqltype="CF_SQL_INTEGER">
其中奖品ID=
(我猜这是一个整数)

但你真的没有弄清楚你的具体问题是什么。不是你试图完成的任务,而是你在完成任务时遇到的具体问题


例如“表单范围未填充”,或“
claim.cfm
从未被调用”或“我遇到JS错误”等。

您正在向claim.cfm页面提交表单。在claim.cfm页面上,您将拥有可用的表单范围。我建议您添加一些响应,这样您就可以在客户端上获得某种结果

function Claim() {
    $.ajax({
        type: "POST",
        url: "claim.cfm",
        data: { claimedPrize: "#prizeID#", claimedEmployee: "#employeeID#"}
    }).done(function(returnresult) {
        alert( returnresult );
    })
}
这将是claim.cfm页面

<cfif isDefined("form.claimedPrize")>
    <cfquery name="updateQuantity" datasource="christmas">
      UPDATE PRIZES
      SET QUANTITY = QUANTITY - 1
      WHERE prize_ID = <cfqueryparam value="#form.claimedPrize#" cfsqltype="CF_SQL_INTEGER" />
    </cfquery>
    SUCCESS!
<cfelse>
    SOMETHING WENT WRONG!
</cfif>

您的问题有点混乱,因为您混合了客户端(AJAX)和服务器端()术语,好像它们之间存在某种关联或可以交互。这个spin.spinnumber、prizeID和employeeID来自哪里?发布后,你在服务器上得到了什么?请您编辑代码以包含这些内容的来源,并明确什么是客户端代码,什么是服务器端代码(这有助于您理解您正在做什么)。我使用cfset将我的员工/奖金变量设置为cfquery中的随机行。这都是在客户端页面(index.cfm)上触发的。我更新了原始帖子以获得更多细节。谢谢更新您的问题。我认为,如果您不使用“页面”的概念,而使用“CFML代码”和“Javascript代码”,可能会有所帮助,因为虽然这两个代码可能位于同一个文件中,但它们不会同时执行。阅读本文可能会有所帮助:。您没有回答我的问题,当您调用
Claim()
时,实际会发生什么。你的问题实际上并没有说明问题是什么。我知道它不做“你想做什么”,但那部分呢?也许还可以读一下:当我调用claim()时,claim.cfm操作页面成功地获取了cfform数据并执行查询以更新奖品数量并记录获奖员工的日志,但我希望在ajax/jquery中这样做,而不太依赖cfform和Coldfusion.ajax。泰,我来看看你的博客。
<cfif isDefined("form.claimedPrize")>
    <cfquery name="updateQuantity" datasource="christmas">
      UPDATE PRIZES
      SET QUANTITY = QUANTITY - 1
      WHERE prize_ID = <cfqueryparam value="#form.claimedPrize#" cfsqltype="CF_SQL_INTEGER" />
    </cfquery>
    SUCCESS!
<cfelse>
    SOMETHING WENT WRONG!
</cfif>
<cfcomponent displayName="My claim Component">
 <cffunction name="claim" output="false" access="remote" returntype="string">
     <cfargument name="claimedPrize" required="true" type="numeric"/>
     <cfargument name="claimedEmployee" required="true" type="numeric"/>
     <cfquery name="updateQuantity" datasource="christmas">
       UPDATE PRIZES
       SET QUANTITY = QUANTITY - 1
       WHERE prize_ID = <cfqueryparam value="#arguments.claimedPrize#" cfsqltype="CF_SQL_INTEGER" />
     </cfquery>
<cfreturn "OK" />
 </cffunction>
</cfcomponent>
function Claim() {
    $.ajax({
        type: "POST",
        url: "claim.cfc?method=claim",
        data: { claimedPrize: "#prizeID#", claimedEmployee: "#employeeID#"}
    }).done(function(returnresult) {
        alert( returnresult );
    })
}