我有一个GSP,下拉菜单如下:
<select onchange="display()" id="mv" class="wrapper-dropdown">
<option value ="AFFILIATES">AFFILIATES</option>
<option value ="CSE">CSE</option>
<option value ="DISPLAYADS">DISPLAYADS</option>
<option value ="EMAIL">EMAIL</option>
<option value ="MOBILEWEB">MOBILEWEB</option>
<option value ="ORGANIC">ORGANIC</option>
<option value ="OTHERS">OTHERS</option>
<option value ="SEM">SEM</option>
<option value ="SEO">SEO</option>
</select>
我想传递以下值给控制器:
var m2 = document.getElementById('mv');
下面是来自我的控制器的代码片段:
def rows = sql.rows("select * from table xyz where mv = 'SELECTED'")
"SELECTED"应该替换为什么?我们如何将m2从GSP传递给控制器,以便它将"SELECTED"替换为从GSP传递的"m2"?这里需要remoteFunction吗?我们如何使用它?我尝试了一些事情,但我没有得到预期的结果。
在你的.gsp中,你可以调用以下代码:
function passMvToController(e){
var mvSelectedValue = $("#mv option:selected").text();
$.ajax({
type:'POST',
url:'${request.contextPath}/myController/myAction/?mv='+mvSelectedValue,
success:function(data,textStatus){},
error:function(XMLHttpRequest,textStatus,errorThrown){}
});
}
然后在你的控制器/动作中,你可以这样使用这个值:
def myAction = {
...
def rows = sql.rows("select * from table xyz where mv = '${params.mv}'")
...
}
请注意,remoteFunction已被弃用,并将从Grails的未来版本中删除——如果您计划在未来升级,则需要自己处理Ajax调用。