在Grails gsp中, 当用户从下拉列表中做出选择时,如果用户从以下位置选择值,则以另一种方式分配变量:
<g:select name="patient.id" from="${patients}" optionKey="id" >
我想在下面将患者的id设置为“pid”变量:
<g:set var="pid" scope="request">
与我成功的唯一方法是:
<g:set var="pid" value="${2}" scope="request">
但这不是动态的方式。
我怎样才能实现这一目标?
感谢 警长
答案 0 :(得分:0)
g:set
实际上不是一个html字段,你试图从html / js代码中分配一个java对象。
您无法从客户端脚本中为任何Java对象分配js变量。如果您需要一种解决方法来实现此目的,那么您可以做的最大值是:
$('#your_select').on('change',function(){
if($('this').val()=="bingo"){
var X="${pid="bingo"}" //if will assign pid a string "bingo" and X(a js var) value "bingo"
}
}
请参阅${}
之间的代码是服务器端代码,并且您无法在其中编写任何客户端代码,因此基本上您不能只执行"${pid=$(this).val()}"
之类的操作。
如果你想知道为什么我们不能这样做是因为没有必要这样做,并且它也没有意义,如 Igor Artamonov 的评论中所述。
答案 1 :(得分:0)
在你不需要一些解决方法,正如我在另一个答案中所描述的那样,对于各种要求的最佳解决方案是:
所以例子是:
var selected = $('#your_select_id).val();
jQuery.ajax({
type: 'POST',
url: 'your action url that will render response',
data: "selected="+selected,
async: false,
success: function(response,textStatus){
json= JSON.parse(response);
$('#some_textBox).val(json.somevalue);
},
error:function(XMLHttpRequest,textStatus,errorThrown){}
});