阿贾克斯新手。只是尝试做一个简单的 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>