2012-06-21 49 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

那麼在這種情況下任何腳本都可以通過其他腳本覆蓋被覆蓋。 –