これですべてが機能しましたが、cfc がデータベースを更新していません。CFC ページのコードを変更しようとしましたが、ページを更新してテストするとエラーが発生します。だから私はそれがcfcページを呼び出していることを知っています。しかし、リンクをクリックすると、データベースの更新以外はすべて機能します。私は何を間違えましたか?
以下は私が思いついたコードです。これは、Yes/No Vote アプリの No Vote 部分にすぎません。この質問をシンプルにするために。私は正しい軌道に乗っていますか?これは非常に単純なはずです。
投票リンク
<A HREF="javascript:()" onclick="VoteNoID('#IdeaID#');"><SPAN ID="VoteNoMessage">I Vote No</SPAN></A> - <SPAN ID="NewNoCount">#NoCount#</SPAN>
Ajax / cfajaxproxy
<cfajaxproxy cfc="CFC/MyCFC" jsclassname="MyCFC">
<script LANGUAGE="JavaScript">
function VoteNoID()
{
var VoteNoID = document.getElementById("VoteNoID");
var cfc = new MyCFC();
cfc.setCallbackHandler(getDataResult);
cfc.NewCount(true)
var VoteNoDescription = document.getElementById("VoteNoDescription").style.display='none';
$('#NewNoCount').html("");
$('#VoteNoMessage').html('You voted "No" with');
}
function getDataResult(result)
{
document.write(result);
}
</script>
投票番号.cfc
<cfcomponent>
<cffunction name="NewCount" access="remote">
<cfargument name="VoteNo" 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="Member" DATASOURCE="MyDSN">
SELECT *
FROM Members
WHERE MemberID = 1
</CFQUERY>
<CFQUERY NAME="MemberVote" DATASOURCE="MyDSN">
INSERT INTO ComingSoonVote(CSID,MemberID,DatePosted,YesNo)
VALUES(#arguments.VoteNo#,#COOKIE.MemberID#,#NOW()#,N)
</CFQUERY>
<cfreturn NewCount>
</cffunction>
</cfcomponent>
Ok を編集して、全員を最新の状態にします。クエリ「MemberVote」を削除しました(はい、上記のコードにはまだあります。誰もが見られるようにここに残しました)エラーを回避し、オレンジピップがcfc.NewCount(true)
提案したように追加した後に NewCount がどのように機能するかを確認します。私が得るのはこれです。データベースを更新し、想定どおりに NewCount を表示します。しかし、1 秒後にページが白くなり、左上に NewCount が表示されるだけです (他には何もありません)。
Firebug は何も表示しません。つまり、Nothing (空白) です。HTML、CSS、コードは一切ありません。どういうわけか ajax が更新され、NewCount のみが表示され、ページは何かを読み込もうとしているように動作しています。リフレッシュしないように何かを追加するのを忘れましたか、それとも何か他のものですか?
この新しい問題を修正し、「MemberVote」クエリでメンバー投票をデータベースに追加する必要があります。何か案は?