2010-10-07 63 views
0

Ajax新手。只是試圖做一個簡單的ajax/cfc投票是/否應用程序。不能讓它工作如何將一個onclick參數傳遞給CFC以通過AJAX更新數據庫?

我想完成的是一個簡單的投票「是或否」的應用程序,它顯示每個鏈接旁邊投的票數。例如:

  • (882票)
  • 沒有(163票)

當訪問者投票時,數據庫應該更新並進行投票,並將投票者記錄在不同的表中(以便他們不能再投票)。最後,顯示新的投票確認消息:

  • 你投票「是」(883票)
  • 您投票沒有(164票)

現在我有一切工作,但更新數據庫。我嘗試通過添加($.ajax)並在ajax部分中移動響應消息來重新調用JavaScript(AJAX)來調用CFC。但是,現在它根本不工作。我做錯了什麼?

下面是我提出的新代碼。爲了簡化這個問題,我只顯示「No」投票部分。我在正確的軌道上嗎?這看起來很簡單。

投票鏈接

<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> 



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> 
+1

什麼不工作?請幫助我們來幫助你。 – Henry 2010-10-07 19:37:18

+0

基本上它不更新數據庫或傳回3條消息來改變投票狀態。舊代碼至少會更新消息並關閉描述。給出投票的外觀,但不更新數據庫。 – 2010-10-07 20:14:50

回答

0

我們.ajax()調用的成功部分就是將html設置爲變量#newcount#。我不確定最初設置變量的位置,但如果您查看生成的原始html,則會看到原始html在此處包含一個靜態數字。您需要將其設置爲JavaScript變量,而不是ColdFusion變量。

因此,嘗試設置此變量爲消息,這是傳遞給您的成功回調的參數。消息應該與您的CFC返回的內容相同。即如果您直接在瀏覽器中調用CFC,則這是您的瀏覽器將呈現的內容。

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

另外,您需要將CFC函數的返回格式調整爲「普通」。 。

相關問題