2010-07-13 6 views
0

J'ai une page qui utilise un .post à soumettre à mon cfc. Je sais que la fonction fonctionne correctement car la base de données est en cours de mise à jour mais l'alerte déclenchée est celle de l'instruction 'else'.Pourquoi mon jQuery ne reconnaît-il pas le retour de mon CFC?

Quelqu'un d'entre vous peut-il voir pourquoi mon retour ne déclenche pas l'alerte correcte? Est-ce que je ne saisis pas le retour correctement?

Certains de mes variables sont figés dans le code à des fins de test ...

Le jQuery:

$(document).ready(function() { 
    var theID = $('#window_one h1').attr('name').split("-")[1]; 
    var gateway = ("001"); 
//Populate the form 
    $('#theText').attr('value', $('#window_one h1').html()); 
    $('#texteditform').submit(function(e){ 
     //stop the form submission 
     e.preventDefault()        
     var newText = $('#theText').val(); 
     //CFC 
     $.post("cfc/engine.cfc?method=updateText&returnformat=json", 
      {text:newText, field:theID, gateway_id:gateway}, 
      function(res) { 
       //Handle the result 
       if(res == "true") { 
        alert("worked fine"); 
       } else { 
        alert("Didn't Work"); 
       } 
      }); 
    });       
}); 

</script> 

Le CFC

<cffunction name="updateText" access="remote" output="no" returntype="boolean"> 


    <cfargument name="field" type="string" required="yes"> 
    <cfargument name="text" type="string" required="yes"> 
    <cfargument name="gateway_id" type="string" required="yes"> 
<cfquery datasource="#application.datasource#" username="#application.username#" password="#application.password#"> 
    UPDATE gateway 
    SET #arguments.field# = <cfqueryparam value="#arguments.text#" cfsqltype="cf_sql_varchar"> 
    WHERE gateway_id = #arguments.gateway_id# 
    </cfquery> 
    <cfreturn true> 
</cffunction> 
+0

Quelle est la réponse exacte? Vérifiez ceci dans firebug ou fiddler. Je ne connais pas cfc mais vous avez marqué votre méthode comme étant à distance, cela signifie-t-il que le script côté serveur renvoie json enveloppé dans une fonction js (jsonp)? – redsquare

+0

Firebug dit que la réponse est 'true' – Ofeargall

+0

Bon, voici la solution, je pense ... Si j'écris l'instruction conditionnelle comme ceci if (response.trim() == "true") Cela fonctionne très bien. Tous les experts de ColdFusion peuvent me dire pourquoi mon retour a 10 retours en plus? – Ofeargall

Répondre

4

Vous avez des espaces supplémentaires en raison de la manière CF génère sa sortie. Vous devez vous assurer que le cfc lui-même est réglé sur output = "false" ... Il se peut que vous ayez à vous déplacer, mais cela devrait vous aider à démarrer.

C'est l'une des caractéristiques les plus ennuyeuses de CF

+0

Cela a fait l'affaire! dans mon cfc a supprimé tout l'espace blanc dans mon retour. Alors maintenant la question est, qu'est-ce que ça va faire d'autre que je ne sais pas encore ... Merci! – Ofeargall

+0

Probablement rien. Il est très rare que vous ne vouliez pas 'output =" false "' au niveau du composant, et il devrait vraiment avoir la valeur par défaut false. –

+0

J'ai posté cette question avec Raymond Camden à ColdFusionJedi, et il a à peu près dit la même chose. Il a toujours la sortie sur CFC définie sur false dans CF8. Il a mentionné que ce n'est pas un problème dans CF9. – Ofeargall