Ajax remoteFunction没有调用action

时间:2013-04-16 17:51:25

标签: ajax grails

我目前正在尝试在Grails中创建一个动态下拉菜单,我有一个Ajax语句,该语句应该从单击的选项中检索值,并使用与第一个选项相对应的项填充第二个下拉菜单用户点击。这是我的声明,并在我的gsp文件中调用:

<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])
}

通过它进行调试时,我发现它甚至没有调用动作功能。有没有办法解决这个问题,还是我需要以不同的方式解决这个问题?

1 个答案:

答案 0 :(得分:0)

您需要在GSP的javascript中使用head库(支持AJAX)才能使remoteFunction正常工作。如果您想扩展Grails的默认sitemesh layout

,请执行以下操作
<head>
    <meta name="layout" content="main"/>
    <title>Term</title>
    <g:javascript library="jquery"/>
</head>

我能够使您的用例工作(自举域并做了更多)。如果需要,我可以发送它。有关详细信息,请参阅Grails文档中的Ajax Section

相关问题