我有一个处理域模型 (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(),
}
});
});
所以,问题是:如何检索指向当前控制器和操作的 URL addB
?如果可能的话,我不想对其进行硬编码或使用相对路径——因为 Grails 实际上提供了一些方法来检索链接。
使用remoteFunction
in Javascript 对我不起作用,因为我使用的是 jQuery。两者似乎都不能很好地协同工作。
我还发现了这篇关于 Grails、jQuery 和 AJAX 的博客文章 (http://alexduan.com/2011/02/17/grails-jquery-and-ajax/)。他在 javascript 部分中使用了一个变量。不幸的是,该contextPath
变量没有被解析,因为 Javascript 不在 GSP 页面中,而是在外部文件中。
我能做些什么?
选项:
- 将 Javascript 片段放在
g:javascript
页面内的标记中(有点丑,因为它有点内联) - 使用相对 URL(不是很健壮)
- 开始工作(如何
remoteFunction
使用 jQuery?) - 还要别的吗?