2011-10-02 27 views
1

我想通過使用remoteFunction調用Ajax函數。但我想用JS變量設置控制器和動作名稱。像這樣:Grails - 在remoteFunction中對控制器和動作參數使用JS變量

... 
var id = 1;  
for (var i = 0; i < updater.slaves.length; i++) { 
     var slave = updater.slaves[i]; 
     var ctrl = slave.data.controller; 
     var action = slave.data.action; 
     ${remoteFunction(controller: ctrl, action: action, params: "'id=' + id", onSuccess: "onSuccessLoadApplications(arguments)", onFailure: "error(arguments)")}    
    } 

問題是我無法檢索控制和操作值(它可以爲id var)。

那麼,是否有可能爲remoteFunction製作動態控制器和動作參數?

謝謝。

回答

0

真的很快,沒有經過測試。看來如果「'id ='+ id」適用於params參數,那麼不應該只是「ctrl」爲控制器工作嗎?

你試過:

${remoteFunction(controller: "'' + ctrl", action: "'' + action", params: "'id=' + id", onSuccess: "onSuccessLoadApplications(arguments)", onFailure: "error(arguments)")}    

+0

我試過了,但不起作用。 Grails不會替換'ctrl'和'action'字符串:( – ChriX

+0

hmmm,這似乎很奇怪,因爲參數「id」的作用。我正在改變它,看看它現在是否有效。 – billjamesdev

1

我不認爲有可能像這樣使用remoteFunction

remoteFunction是一個taglib,這意味着它會在服務器端進行處理。在那個階段,javascript不會運行,所以你不能追加字符串'+'。

總之,remoteFunction中的代碼必須遵循有效的Groovy語法。這意味着你不能像示例代碼中那樣放入JavaScript。

我認爲要使事情發揮作用,您必須編寫自己的JavaScript來完成這項Ajax工作。

+0

部分「id」工程取決於taglib的處理方式,它可能會發生變化。簡單地說,編寫「remoteFunction」的開發人員不會考慮動態更改控制器名稱的情況 –

相關問題