Grails 多重<;g:选择>;在控制器内部HQL中的一个GSP和多个参数中

Grails 多重<;g:选择>;在控制器内部HQL中的一个GSP和多个参数中,grails,gorm,gsp,params,Grails,Gorm,Gsp,Params,普惠制 <html> <head> <g:javascript src="jquery-1.10.2.min.js"/> <g:javascript src="prototype.js"/> </head> <body> <form> <g:select from="['AFFILIATES', 'SEO', 'SEM','DISPLAYADS']" name="mv" onchang

普惠制

<html>
<head>
<g:javascript src="jquery-1.10.2.min.js"/>
<g:javascript src="prototype.js"/>
</head>
<body>
<form>
<g:select from="['AFFILIATES', 'SEO', 'SEM','DISPLAYADS']" name="mv"
           onchange="${remoteFunction(
            controller:'Pgtyp', 
            action:'ajaxGetMv', 
            params:'\'mv=\' + escape(this.value)',
            onSuccess: 'printpgtyp(data)')}"
></g:select>
</form>
<script>
function printpgtyp(data)
{
console.log(data);
}
</script>
</body>
</html>
这很好。现在我想添加以下类型的另一个:

<g:select from="['a', 'b', 'c','d']" name="mv"
当任何一个下拉列表发生变化时,我需要相关的输出。这可以在Grails中实现吗?我仍在探索,如有任何建议,将不胜感激

更新 这是我在GSP中尝试的:

<html>
<head>
<g:javascript src="jquery-1.10.2.min.js"/>
<g:javascript src="prototype.js"/>
</head>
<body>
    var a = document.getElemntByName(mv);
    <form>
<g:select from="['AFFILIATES', 'SEO', 'SEM','DISPLAYADS']" name="mv" class="mySelect"
           onchange="${remoteFunction(
            controller:'Pgtyp', 
            action:'ajaxGetMv', 
           // params:'\'mv=\' + escape(this.value)',
            params:'\'mv=\' + $(".mySelect").val()',
            onSuccess: 'printpgtyp(data)')}"
></g:select>
<g:select from="['SAFARI', 'MOZILLA', 'OTHERS']" name="br" class="mySelect"
           onchange="${remoteFunction(
            controller:'Pgtyp', 
            action:'ajaxGetMv', 
           // params:'\'mv=\' + escape(this.value)',
            params:'\'br=\' + $(".mySelect").val()',
            onSuccess: 'printpgtyp(data)')}"
></g:select>
</form>
<script>
function printpgtyp(data)
{
console.log(data);
}
</script>
</body>
</html>
但是,它抛出了一个错误

Uncaught TypeError: Cannot read property 'val' of null 

您可以使用
&key=value
分隔多个参数。考虑GET请求的URL参数

请为选择框使用适当的类(mySelect1、mySelect2),以便使用jQuery轻松访问它们

params:'\'mv=\' + $(\'.mySelect1\').find(\':selected\').text() + \'&br=\' + $(\'.mySelect2\').find(\':selected\').text()',
这起到了作用:

<g:select from="['DESKTOP/LAPTOP','SMARTPHONES','OTHERS','TABLETS']" name="device" id ="device"
           onchange="${remoteFunction(
           controller:'Pgtyp', 
           action:'ajaxGetMv',   
           params:'\'device=\'+this.value+\'&mv=\'+$(\'mv\').value+\'&browser=\'+$(\'browser\').value+\'&pagetype=\'+$(\'pagetype\').value+\'&platform=\'+$(\'platform\').value' ,
           onSuccess: 'printpgtyp(data)')}"
></g:select>


我再次遇到相同的错误。即使我尝试打印console.log($(“.mySelect”).val()),也会出现一个错误,即“无法读取null的属性'val'”选择框没有值,因此您需要找到所选选项,请参阅答案。我尝试使用$(.mySelect.find:selected.text)打印下拉列表的值->它给出一个synatx错误,表示意外令牌。因此,当远程函数运行时,它会给出一个错误,说明无法读取null的find
Uncaught TypeError: Cannot read property 'val' of null 
params:'\'mv=\' + $(\'.mySelect1\').find(\':selected\').text() + \'&br=\' + $(\'.mySelect2\').find(\':selected\').text()',
<g:select from="['DESKTOP/LAPTOP','SMARTPHONES','OTHERS','TABLETS']" name="device" id ="device"
           onchange="${remoteFunction(
           controller:'Pgtyp', 
           action:'ajaxGetMv',   
           params:'\'device=\'+this.value+\'&mv=\'+$(\'mv\').value+\'&browser=\'+$(\'browser\').value+\'&pagetype=\'+$(\'pagetype\').value+\'&platform=\'+$(\'platform\').value' ,
           onSuccess: 'printpgtyp(data)')}"
></g:select>