0

Ajax の新機能。単純な ajax/cfc 投票 yes/no アプリを実行しようとしています。うまくいかない

私が達成しようとしているのは、各リンクの横に投票数が表示される単純な投票「はいまたはいいえ」アプリです。例えば:

  • はい (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>
4

1 に答える 1

0

.ajax() 呼び出しの成功の部分は、html を変数 #newcount# に設定するだけです。その変数が最初にどこに設定されているかはわかりませんが、生成された生の html を見ると、生の html にここに静的な番号が含まれていることがわかります。これは、ColdFusion 変数ではなく、JavaScript 変数として設定する必要があります。

したがって、この変数をメッセージに設定してみてください。これは、成功のコールバックに渡される引数です。Message は、CFC が返すものと等しくなければなりません。つまり、ブラウザで CFC を直接呼び出すと、これがブラウザでレンダリングされます。

success: function(message) {   
        $('#VoteNoMessage').html("you voted No");  
            $('#NewNoCount').html(**message**);  
           }   

また、CFC 関数の戻り形式を「プレーン」に調整する必要があります。.

于 2013-04-29T16:33:50.480 に答える