У меня есть форма, которая обрабатывает редактирование модели предметной области (A). Эта модель домена также hasMany
другие модели домена (B). Поэтому, чтобы добавить новые B в A, я хотел реализовать пользовательскую функцию 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
в Javascript мне не помогло, так как я использую jQuery. Кажется, что оба не работают хорошо вместе.
Я также нашел эту статью в блоге (http://alexduan.com/2011/02/17/grails-jquery-and-ajax/) о Grails, jQuery и AJAX. Он использует переменную в части javascript. К сожалению, переменная contextPath
не анализируется, поскольку Javascript не находится на странице GSP но во внешнем файле.
Что я могу сделать?
Параметры:
- Поместите фрагмент Javascript в тег
g:javascript
на странице (несколько уродливо, потому что он несколько встроен)
- Использовать относительный URL (не очень надежный)
- Получите
remoteFunction
для работы (как это сделать с jQuery?)
- что-нибудь еще?