2015-12-21 1 views
2

Je travaille avec grails 2.1.1. J'ai une fonction distante d'où je veux passer plus d'une variable de script java à travers g: remoteFunction. Mais aucune variable js ne va au contrôleur. Mes variables js sont soulignées et ne sont pas reconnues. Quelqu'un peut-il m'aider s'il vous plaît? Voici mes tentatives ci-dessous ::Comment puis-je transmettre une variable javascript au contrôleur de grails à l'aide de remoteFunction

Ma fonction >>>

function addNewBill(){ 
    var orgId = $('#aaOrgIdAaOrg').val(); 
    var ccId = $('#costCenter').val(); 
    if(orgId != null && orgId != "null" && orgId != "" && ccId != null && ccId != "null" && ccId != ""){ 
     $('#ccModal').modal('hide'); 
     ${remoteFunction(action: 'createBill', params: [purchaseOrderId: purPoMstInstance.id, aaOrgIdAaOrg: orgId, costCenter: ccId], update: 'bill')}    
    } 
} 

Répondre

1

Comme remoteFunction rend enfin une fonction jQuery, vous pouvez utiliser l'option params, d'inclure vos variables en utilisant les sélecteurs jQuery ou les vars ou fonctions Js dont vous avez besoin.

Voici un exemple. Comme vous pouvez le voir, la valeur params est juste une chaîne, mais après renderer, il sera exécuté la cause après est js;)

<button type="button" onclick="${remoteFunction(controller: 'category', action: 'save', update: "eventsDiv", 
    params: '\'type=\' + myJSvar)}"> 
     ${message(code: 'default.button.save.label')} 
</button> 
+0

ne fonctionne pas pour moi –

+0

Pourquoi ça ne fonctionne pas pour vous? – quindimildev

+0

Ma question portait sur la variable js, pas sur la valeur du champ. –

-1

Vous devriez envoyer cela à un point de terminaison api sur le back-end.

+0

comment envoyer un point de terminaison api sur la backend ?? –

0

Je crois que le code est écrit en GSP qui est respecté et rendu en html afin qu'il ne puisse pas lire les modifications de l'utilisateur sur la page. Par exemple, l'élément #aaOrgIdAaOrg est une liste déroulante et vous voulez lire la valeur modifiée de la liste déroulante, puis la valeur compilée de la balise GSP ne peut pas lire ceci.

Si la valeur de l'événement ne change pas avec les événements utilisateur et passe de l'action au modèle, vous pouvez directement utiliser le paramètre dans la fonction distante.

Dans votre cas, je pense que ce sera mieux si vous écrivez votre propre code ajax plutôt que d'utiliser remoteFunction. La balise RemoteFunction est destinée aux utilisations de base et est également déconseillée dans les nouvelles versions de Grails. Si vous utilisez cette balise, vous devrez la supprimer lorsque vous déciderez de migrer vers une version plus récente de Grails.

Hope it helps

0
function addNewBill(){ 
var orgId = $('#aaOrgIdAaOrg').val(); 
var ccId = $('#costCenter').val(); 
if(orgId != null && orgId != "null" && orgId != "" && ccId != null && ccId != "null" && ccId != ""){ 
    $('#ccModal').modal('hide'); 
    ${remoteFunction(action: 'createBill', params: '\'orgId=\' + orgId+\'&ccId=\' + ccId', update: 'bill')}    
} 

}