Maintenant, tout fonctionne mais mon cfc ne met pas à jour la base de données. J'ai essayé de changer le code dans la page de CFC, mais cela soulève juste des erreurs quand j'actualise la page pour la tester. Donc, je sais qu'il appelle la page cfc. Mais quand je clique sur le lien, tout fonctionne sauf mettre à jour la base de données. Qu'ai-je fait de mal?cfajaxproxy/cfc Echec de la mise à jour de la base de données
Voici le code que j'ai trouvé. C'est juste la partie sans vote d'une application de vote Oui/Non. pour garder cette question simple. Suis-je sur la bonne voie? Cela semble être très simple.
lien de 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>
VoteNo.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>
Modifier Ok pour mettre tout le monde à jour. J'ai enlevé la requête "MemberVote" (oui c'est toujours là dans le code ci-dessus, je l'ai laissé ici pour que tout le monde la voit) juste pour contourner l'erreur et voir comment fonctionne NewCount après avoir ajouté cfc.NewCount(true)
comme des orangepips. Ce que je reçois est ceci; Il met à jour la base de données et affiche le NewCount comme il est supposé le faire. Mais une seconde plus tard, la page devient blanche et tout ce que j'ai est le NewCount affiché en haut à gauche (rien d'autre). Firebug ne montre rien et ce que je veux dire est Nothing (vide). Pas de code HTML, CSS, pas de code du tout. D'une manière ou d'une autre, l'ajax se rafraîchit et n'affiche que le NewCount et la page agit comme si elle essayait de lier quelque chose. Ai-je oublié d'ajouter quelque chose pour l'empêcher de rafraîchir ou est-ce autre chose?
J'ai besoin de résoudre ce nouveau problème et l'obtenir pour ajouter le vote des membres à la base de données dans le dans la requête "MemberVote". Des idées?
L'erreur était quelque chose que j'ai fait le cfc juste pour voir si elle était même appelée. Ne pas s'inquiéter Sam J'utilise toujours cfqueryparam sur toutes mes requêtes. Je ne les ai pas mis dans mon exemple car je voulais garder le code simple pour que quelqu'un puisse voir ce que j'ai fait de mal. J'ai mis la variable "NewCount" dedans et cela a résolu de mettre à jour le compte dans la base de données mais c'est aussi loin que cela fonctionne. L'insertion de la requête ne fonctionne toujours pas. Je vais essayer des choses différentes et voir si je pourrais obtenir quelque chose de bien. –