如何打开模态窗体,在控制器中执行操作,并在 Grails 中呈现结果
How to open a modal-form, execute a action in the controller, and render the result in Grails
我的gsp中有一个表格,其中每行都有一个按钮可以编辑。此按钮将打开一个模式面板,其中包含用于编辑此行的窗体。当我打开这个模态时,js 函数运行并对控制器的操作进行 ajax 调用,传递行的 id。在控制器中,我搜索实体,然后将其返回到视图。但问题是,在视图中我看不到这个对象。
我拥有的代码是:
普惠制:
<a href="#modal-form" data-id="${cancha?.id}" role="button" class="open-EditCanchaModal btn btn-xs btn-info" data-toggle="modal" />
然后,这个模式有一个g:formRemote,里面有4个文本字段来编辑属性
JS:
$(document).on("click", ".open-EditCanchaModal", function () {
var canchaId = $(this).data('id');
var newData = $.post("${createLink(controller: 'cancha', action: 'selectToEdit')}/"+canchaId);
alert("dat: "+newData); // it print dat: [object Object]
alert("can: "+newData.cancha); // it print undefined
});
圣杯:
def selectToEdit = {
Cancha cancha = Cancha.get(params.id)
println cancha // this found the correct "Cancha"
[cancha:cancha]
}
所以,我想在调用方法selectToEdit之后,在JS中获取Cancha,以在模态面板的文本字段中呈现属性。
我也是Grails的新手。如果我错了,请纠正我。
返回的 newData 将是对象的字符串格式。(不是真正的对象,把它想象成toString()的输出)
所以,要实现你想做的事情。您可以使用JSON编码/解码作为JS/GRAILS之间的桥梁。
使用 ajax 创建 Grail Jquery 模态窗口和表单发布?
部分摘录:
"Attach Comment": function() {
//do form posting here
$.ajax({
context: $(this),
url:"${resource()}"+"/issue/attachComment",
type:"POST",
data:{"comment":$('#commentArea').val(),"id":$("#selectedIssueInstanceId").val()},
success:function(data){
if(data.success)
{
var tobeAppendeID = $("#selectedIssueInstanceId").val();
$('#'+'comment_'+tobeAppendeID).val(data.newComment);
$( this ).dialog( "close" );
}
else
{
$('#error-message').addClass('ui-state-error ui-corner-all');
$("#error-message").html(data.message).show()
$(this).dialog("close");
}
$( this ).dialog( "close" );
}
相关文章:
- 使用clickToggle并在单击另一个元素时关闭元素
- 使用javascript检查多个输入值,并在1次检查中标记多个输入框
- 使用jQuery动态添加表并在其中动态添加行
- 遍历类元素数组,并在jquery中选择同级元素
- 如何缩短MongoDB ObjectId并在Mongoose模式中使用它
- 如何覆盖锚点元素's href目标,并在我点击转到目标javascript时删除其他错误
- 通过ajax将坐标传递到php服务器端,并在处理后检索到javascript
- ng消息仅在触摸时显示错误,并在错误的初始显示上转换
- Javascript对象类在单击时打开窗口进行颜色选择,并在更改时替换对象背景颜色
- 如何使用JS禁用表行,并在MYSQL中插入所选选项
- Node.js上的WebSocket,并在所有连接的客户端之间共享消息
- OpenLayers在悬停时高亮显示功能,并在单击时选择
- 将循环中的两个文本框相乘,并在第三个文本框上显示结果
- 获取屏幕截图并在电子邮件中发送的按钮
- CSS/HTML:更改文本的值并在悬停时从中心展开
- 使用php脚本验证访问者的年龄,并在不刷新的情况下根据结果加载iframe
- Sails.js:我可以将一些服务/模型打包为npm并在Sails.jss应用程序中加载npm吗
- AJAX调用并在Node中获取返回数据
- 从服务器获取数据并在选择控件中使用ng选项无法显示选项
- 如何打开模态窗体,在控制器中执行操作,并在 Grails 中呈现结果