将下拉列表中选择的值发送到控制器



我有一个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调用。

相关内容

  • 没有找到相关文章

最新更新