2012-08-06 80 views
1

我試圖調用一個功能,一旦在下拉菜單中進行了選擇。這裏是我的下拉菜單在我的list.gsp的「代碼」域類代碼:remoteFunction調用不工作grails

<td><g:select name="data" from="${codeInstance.datas.language}" 
      onchange="${remoteFunction(action: 'translationById')}"/> 
</td> 

,這裏是我想調用的函數。這是我CodeController:

def translationById = { 
     println "Fine" 
     //println params; 
    } 

我只是想打印出「精」,所以我知道調用函數,但「微調」永遠不會被打印出來。爲什麼函數沒有被調用?

回答

1

而不是使用閉合,使用方法,如:

def translationById() { 
     println "Fine" 
     //println params; 
} 

此外,使用一些瀏覽器像螢火蟲或類似的調試器,看看是否顯示錯誤消息。

如果將警報放入onchange事件而不是remoteFunction中,會發生什麼情況?如果顯示警報,那麼我認爲你的問題是與原型庫。將原型庫添加到您的標題。像<g:javascript library="prototype" />

+0

我將它從閉包更改爲方法,並且我沒有收到任何錯誤消息。當我直接在瀏覽器中訪問它時打印出「Fine」,但當我實際更改下拉菜單中的選擇時不打印 – Ameya 2012-08-06 20:10:00

+0

如果將警報放入onchange事件而不是remoteFunction中,會發生什麼?如果顯示警報,那麼我認爲你的問題是與原型庫。 將原型庫添加到您的標題。像。 – 2012-08-06 20:29:11

+0

警報正在顯示。如果我已經安裝了jQuery插件,我需要原型庫嗎?我認爲jquery插件現在是grails使用的默認JavaScript庫 – Ameya 2012-08-06 20:42:34

0

語法對我來說很好。儘量確保你的'codeInstance'和'datas'不爲null。另外,嘗試,並通過在這樣的控制器名稱:

remoteFunction(action: 'translationById', controller: 'code') 

Grails的新標準是改爲使用關閉方法:

def translationById(){ 
    println "fine" 
} 
+0

我很確定它們不是null,因爲我使用codeInstance的datas屬性填充下拉框,並且下拉框正確地填滿了。我現在指定了控制器,但它仍然不起作用 – Ameya 2012-08-06 19:06:41