将下拉菜单中选择的值发布到控制器

时间:2014-07-01 16:34:42

标签: ajax grails gsp

我有一个带有下拉列表的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'")

应该选择什么&#39;选择&#39;被替换为,我们如何将m2从GSP传递给控制器​​,以便它取代&#39; SELECTED&#39;用&#39; m2&#39;从GSP传递? 我们需要remoteFunction吗?我们如何使用它?我尝试了一些事情,但我没有得到预期的结果。

1 个答案:

答案 0 :(得分:0)

在.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调用。