2012-06-21 6 views
0

Je veux passer les paramètres d'URL utilisés dans un GSP à une fonction jQuery. J'ai trouvé une solution qui fonctionne mais mon instinct me dit d'utiliser des variables Javascript globales ce n'est pas une bonne idée.Passer des paramètres de Grails à Javascript

GSP - faire params.id de Grails disponibles pour Javascript comme une variable globale:

<g:javascript > 
    var categoryId = ${params.id} 
</g:javascript> 

En utilisant cette variable dans une fonction jQuery:

<g:javascript src="views/visual.js"/> 

Javascript:

// Call with URL using the global variable defined in the GSP 
$.getJSON(
    "../visualJson?id=" + categoryId, 
    function (data) { 
    // Some code. 
}); 

Quelle est la façon idiomatique des Grails de le faire?

Répondre

3

Bien que n'étant pas nécessairement spécifique à Grails, pourquoi ne pas passer la variable dans une fonction? Dis:

Dans « vues/visual.js » vous avez:

var someFunction = function(categoryId) 
{ 
    // Call with URL using the global variable defined in the GSP 
    $.getJSON(
     "../visualJson?id=" + categoryId, 
     function (data) { 
     // Some code. 
    }); 
} 

Et ainsi vous passez la valeur en appelant la fonction someFunction('${params.id}') dans votre application.

+0

Ou vous pouvez créer un objet javascript qui contient les variables - de cette façon, vous n'avez pas de variables globales. –

+0

Mais cet objet sera toujours disponible globalement et pourrait être écrasé par d'autres scripts, surtout si vous utilisez des scripts tiers (dans le pire des cas bien sûr) –

+0

Dans ce cas, n'importe quel script peut être écrasé par d'autres scripts. –

Questions connexes