我知道我必须做一些非常简单而又错误的事情。我有一个页面,里面有一个隐藏的div。当您单击页面上的按钮时,jQuery会显示该div。当div显示时,它有一个formRemote,其中包含我需要填充的下拉列表,但我只能得到一个空的下拉列表。
以下是formRemote中的g:select列表,如下所述:
<g:formRemote name="editinstitutionForm" url="[controller:'admin', action:'editInstitution']" onSuccess="doResult2(data)">
<label>Institution: </label><g:select name = "pickInst" from = "${instlist}" style = "border-radius: 5px"></g:select><br><br>
<label>New name: </label><g:textField name="username" style = "border-radius: 5px"></g:textField><br><br>
<div id = "submit3"><g:submitButton id = "submit_button3" name="Submit"/></div>
</g:formRemote>
这是使得包含g:select的div出现的按钮代码(使用jQuery):
<button class = "adminoption" id = "editInst" onclick = "${remoteFunction(action:'updateInstlist', controller: 'admin')}">Edit An Institution</button>
当单击此按钮时,我也在控制器中调用一个函数来准备显示列表,这是该函数:
def updateInstlist = {
instlist = Institution.list().collect {it.username}.sort(java.text.Collator.instance)
return [instlist: instlist]
}
我知道上面的列表不是null并准备好了,因为我已经尝试将它打印到控制台。我确定这很简单,只是不知道我做错了什么。我不确定按钮调用的jQuery代码会有所帮助,但我会包含它:
$("#editInst").click( function() {
$("#institutionEntered").hide();
$("#pleaseChoose").hide();
$("#institutionInfo2").hide();
$("#editedInstitution").hide();
$("#leftEntryForm").show();
$("#instInfo3").show();
$("#editInstInfo").show();
});
最后,当我点击显示带有g:select的div的按钮时,这是我在Chrome调试控制台中获得的内容:
POST http://localhost:8080/FatcaOne_0/admin/updateInstlist 404 (Not Found) jquery-1.11.0.min.js:4
send jquery-1.11.0.min.js:4
n.extend.ajax jquery-1.11.0.min.js:4
onclick
答案 0 :(得分:1)
我可以看到你填充g:每次按下按钮时选择,每次从数据库中检索数据,如果我是对的,这是不好的,这是我的建议,为了填充g:选择实现你的代码机构.list().... int生成描述视图的动作并将其作为模型传递并从头开始填充g.select标记,当用户显示div时它将被填充
我希望它有所帮助