0

阿贾克斯新手。只是尝试做一个简单的 ajax/cfc 投票是/否应用程序。无法让它工作

我想要完成的是一个简单的“是或否”投票应用程序,它显示每个链接旁边的投票数。例如:

  • (882 票)
  • (163 票)

当访问者投票时,数据库应该更新投票并将投票者记录在不同的表中(这样他们就不能再次投票)。最后,将显示一条确认消息,其中包含新的投票计数:

  • 您投了“是” (883 票)
  • 你投了反对票 164 票)

现在我一切正常,但更新了数据库。($.ajax)我尝试通过在 ajax 部分中添加和移动响应消息来修改 JavaScript (AJAX) 以调用 CFC 。但是,现在它根本不起作用。我做错了什么?

下面是我想出的新代码。为了使这个问题简单,我只显示“否”投票部分。我在正确的轨道上吗?这似乎很简单。

投票链接

<A HREF="javascript:()" onclick="VoteNoID('#IdeaID#');">
   <SPAN ID="VoteNoMessage">No</SPAN>
</A> 
- <SPAN ID="NewNoCount">#NoCount#</SPAN>

阿贾克斯

<script  LANGUAGE="JavaScript">  
   function VoteNoID()  
    {  
     var VoteNoDescription = document.getElementById("VoteNoDescription").style.display='none';  
            $.ajax({   
                type: "POST",   
                url: "../CFC/VoteNo.cfc?method=VoteNoID",   
                data: recordata,   
                dataType: "html",   
                success: function(message) {   
                    $('#VoteNoMessage').html("you voted No");  
                    $('#NewNoCount').html("#NewCount#");  
                    }   
                });   
            });   
        } `     
<script>



投票号.cfc

<cffunction name="NoVote" access="remote" returntype="string" 
    <cfargument name="VoteNo" type="string" required="yes">
    <CFQUERY NAME="NoCountCK" DATASOURCE="MyDSN">
        SELECT  *
        FROM    Ideas
        WHERE   IdeaID = #arguments.VoteNo#
    </CFQUERY>
    <CFSET NewCount=#NoCountCK.NoCount#+1>
    <CFQUERY NAME="UpdateNoCount" DATASOURCE="MyDSN">
        UPDATE  Ideas
        SET     NoCount = #NewCount#
        WHERE   IdeaID = #arguments.VoteNo#
    </CFQUERY>
    <CFQUERY NAME="MemberVote" DATASOURCE="MyDSN">
        INSERT INTO MemberVoteRecord(IdeaID,MemberID,DatePosted,YesNo)
        VALUES(#arguments.VoteNo#,#COOKIE.Member_ID#,#NOW()#,N)
    </CFQUERY>
    <cfreturn NewCount>
</cffunction>
4

1 回答 1

0

我们 .ajax() 调用的成功部分只是将 html 设置为变量#newcount#。我不确定该变量最初是在哪里设置的,但是如果您查看生成的原始 html,您会看到原始 html 在此处包含一个静态数字。您需要将其设置为 javascript 变量,而不是 ColdFusion 变量。

因此,尝试将此变量设置为消息,这是传递给您的成功回调的参数。消息应该等于您的 CFC 返回的任何内容。即,如果您直接在浏览器中调用 CFC,这就是您的浏览器将呈现的内容。

success: function(message) {   
        $('#VoteNoMessage').html("you voted No");  
            $('#NewNoCount').html(**message**);  
           }   

此外,您还需要将 CFC 函数的返回格式调整为“普通”。.

于 2013-04-29T16:33:50.480 回答