2013-04-16 67 views
0

我目前正在嘗試在Grails中創建一個動態下拉菜單,並且我有一個Ajax語句,該語句應該從點擊的選項中檢索值並使用各自的項目填充第二個下拉菜單到用戶點擊的第一個選項。這裏是我的發言,並呼籲在我的GSP文件:Ajax remoteFunction沒有調用動作

<div class="fieldcontain"> 
    <g:select name="termSelection" from="${Term.list()}" values="${params.id}" optionKey="id" optionValue="semester" noSelection="['':'----Term----']" 
       onchange="${remoteFunction (controller: 'term', action: 'findWeeksForSemester', params: '\'term.id=\' + this.value', update: 'weekSelection')}"/> 

</div> 
<br> 
<td id="weekSelection"> 
    <select> 
     <option>----Week----</option> 
     <g:select name="week.id" from="${Week.list()}" optionValue="week" optionKey="id"/> 
    </select> 
</td> 

動作被調用函數是這樣的:

def findWeeksForSemester = { 
    println("Testing for action event") 
    println(params) 
    def term = Term.get(params.term.id) 
    render(template: 'weekSelection', model: [week: term.week]) 
} 

調試時通過它,我發現,它甚至不調用動作功能。有沒有什麼辦法可以解決這個問題,還是我需要以不同的方式去解決這個問題?

+0

顯示生成的呈現html。 –

+0

生成的html與加載的html頁面相同,因爲該操作不會加載該方法,因此它不會呈現另一個頁面。 – thehoule64

+0

我相信詹姆斯在詢問你的選擇標記時提出了什麼,甚至在你嘗試調用該動作之前,確認你的調用代碼(例如onchange =「...」)是正確的。 – ikumen

回答

0

爲了使remoteFunction正常工作,您需要在GSP的head中有一個javascript庫(支持AJAX)。喜歡的東西下面,如果你婉從Grails的

<head> 
    <meta name="layout" content="main"/> 
    <title>Term</title> 
    <g:javascript library="jquery"/> 
</head> 

我是能夠使你的使用情況的工作(自舉域和做了更多)擴展默認sitemesh layout。如果需要,我可以發送它。有關詳細信息,請參閱Grails文檔中的Ajax Section