【发布时间】:2012-03-19 19:48:20
【问题描述】:
我有一个处理域模型 (A) 编辑的表单。这个域模型还有hasMany其他域模型(B)。所以为了给 A 添加新的 B,我想实现一个自定义的 AJAX 函数,将一些输入字段的参数发送到控制器。
为此,我创建了以下 GSP:
<g:form>
<!-- other stuff concerning entity A -->
<p>Add B to A</p>
<input type="text" id="bName" /> <input type="text" id="bSomeProperty" <a href="#" id="addB">Add</a>
</g:form>
并将以下一段 Javascript 添加到我的 main.js 中,由 resources 插件加载。
$("#addB").click(function() {
$.ajax({
url: '', // controller: a, action: addB
dataType: 'json',
data: {
bName: $('#bName').val(),
bSomeProperty: $('#bSomeProperty').val(),
}
});
});
所以,问题是:如何检索指向当前控制器和操作addB 的 URL?如果可能的话,我不想对其进行硬编码或使用相对路径——因为 Grails 实际上提供了一些方法来检索链接。
在 Javascript 中使用 remoteFunction 对我不起作用,因为我使用的是 jQuery。两者似乎不能很好地协同工作。
我还发现了这篇关于 Grails、jQuery 和 AJAX 的博客文章 (http://alexduan.com/2011/02/17/grails-jquery-and-ajax/)。他在 javascript 部分中使用了一个变量。不幸的是,contextPath 变量没有被解析,因为 Javascript 不在 GSP 页面中,而是在外部文件中。
我能做什么?
选项:
- 将 Javascript 片段放在页面内的
g:javascript标记中(有点难看,因为它有点内联) - 使用相对 URL(不是很可靠)
- 让
remoteFunction工作(如何使用jQuery?) - 还有什么?
【问题讨论】:
标签: jquery grails-2.0