новичок в Ajax. Просто пытаюсь сделать простое приложение ajax / cfc голосования да / нет. Не могу заставить его работать
То, что я пытаюсь сделать, - это простое приложение для голосования «Да или Нет», в котором отображается число голосов, поданных за каждую ссылку. Например:
- Да (882 голоса)
- Нет (163 голоса) .
Когда посетитель голосует, базу данных следует обновить с помощью голосования и записать избирателя в другую таблицу (чтобы он не мог голосовать снова). Наконец, отображается подтверждающее сообщение с новым подсчетом голосов:
- Вы проголосовали "Да" (883 голоса) или
- Вы проголосовали Нет (164 голоса)
Теперь у меня все работало, кроме обновления базы данных. Я попытался переработать JavaScript (AJAX) для вызова CFC, добавив ($.ajax)
и переместив ответные сообщения в часть ajax. Однако сейчас это не работает вообще. Что я сделал не так?
Ниже приведен новый код, который я придумал. Чтобы этот вопрос был простым, я просто показываю часть голосования «Нет». Я на правильном пути? Кажется, это было бы очень просто.
Ссылка для голосования
<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>