【发布时间】:2010-10-07 19:22:32
【问题描述】:
Ajax 新手。只是尝试做一个简单的 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>
Ajax
<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>
VoteNo.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>
【问题讨论】:
-
什么不起作用?请帮助我们为您提供帮助。
-
基本上它不会更新数据库或将 3 条消息传回以更改投票状态。旧代码至少会更新消息并关闭描述。显示已投票,但未更新数据库。
标签: ajax coldfusion coldfusion-8 cfc