2012-06-21 48 views
0

我想传递一个GSP使用一个jQuery功能的URL参数。我找到了一个可行的解决方案,但是我的直觉告诉我使用全局的Javascript变量并不是一个好主意。传递Grails的PARAMS为Javascript

GSP - 从一个全局变量可为Javascript的Grails使params.id:

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

在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. 
}); 

这样做的惯用Grails方式是什么?

回答

3

虽然不一定具体到Grails的,你为什么不传递变量到一个函数?你说:

在“视图/ visual.js”你有:

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

就这样,你通过调用函数someFunction('${params.id}')在您的应用程序传递值。

+0

或者,您可以创建包含变量JavaScript对象 - 你没有全局变量的方式。 –

+0

但该对象仍然会在全球上市,并且可以通过其他脚本,特别是如果你使用第三方的脚本(当然最坏的情况下) –

+0

那么在这种情况下任何脚本都可以通过其他脚本覆盖被覆盖。 –