Ajax新手。只是尝试做一个简单的ajax / cfc投票是/否应用程序。无法让它工作
我想要完成的是一个简单的投票“是或否”应用程序,其中显示了每个链接旁边的投票数量。例如:
当访问者投票时,应该使用投票更新数据库并将选民记录在不同的表中(因此他们不能再投票)。最后,将显示一条确认消息,其中包含新的投票计数:
现在我已经完成了所有工作,但更新了数据库。我尝试通过添加($.ajax)
并在ajax部分中移动响应消息来重新编写JavaScript(AJAX)来调用CFC。但是,现在它根本不起作用。我做错了什么?
以下是我提出的新代码。为了简化这个问题,我只是展示了“No”投票部分。我是在正确的轨道上吗?这看起来很简单。
投票链接
<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>
答案 0 :(得分:0)
我们的.ajax()调用的成功部分就是将html设置为变量#newcount#。我不确定最初设置该变量的位置,但如果您查看生成的原始html,您会看到原始html包含静态数字。您需要将其设置为javascript变量,而不是ColdFusion变量。
因此,尝试将此变量设置为message,这是传递给成功回调的参数。消息应该等于您的CFC返回的内容。即如果您直接在浏览器中调用CFC,则这是您的浏览器将呈现的内容。
success: function(message) {
$('#VoteNoMessage').html("you voted No");
$('#NewNoCount').html(**message**);
}
此外,您还需要将CFC功能的返回格式调整为“普通”。