Итак, я чувствую, что здесь есть две вещи, о которых вы спрашиваете. Я собираюсь заняться ими обоими. Во-первых, как правильно настроить URL для вызова контроллера Grails из JavaScript? На моей странице GSP (я делаю это в своем основном макете, но неважно), мне нравится делать этот маленький трюк:
<script>
myapp.url.root = "<g:resource dir='' file='' />" + "/";
</script>
Это даст вам базовый корень вашего приложения, где бы оно ни было развернуто. Затем вы можете создать свои URL в JavaScript:
myurl = myapp.url.root + "путь / к / контроллеру"
Затем выполните вызов jQuery ajax, используя этот URL.
Затем убедитесь, что ваш контроллер настроен для ответа на любой шаблон URL, который вы только что выразили.
Второй вопрос: «Как я могу отправить обратно фрагмент HTML»?
Внутри самого контроллера, возьмите параметры из запроса, используйте его, чтобы выяснить, что вам нужно, затем визуализируйте gsp, передавая созданную вами модель. Это будет выглядеть примерно так:
def show() {
def data = [hypothesis : metadataService.getHypothesis(params.id) as JSON]
render(view:"create", model:data)
}
Затем в jQuery ваш обработчик успеха получит в качестве аргумента возвращенный ответ, который вы затем сможете проверить / обработать / добавить в dom.
Надеюсь, все это имело смысл. Если я замутил что-то или не ответил на вопрос, который вы задавали, дайте мне знать.
РЕДАКТИРОВАТЬ: Для дальнейшего использования, вот переписанный метод javascript, который мы получили в чате:
function getSelected(checkList){
var idList = $("input[name='" + checkList + "']:checked").map(function(){ return $(this).val(); });
$.ajax({
url: "/path/to/controller",
type:"POST",
data:{ids:JSON.stringify(idList)}
success:mySuccessFunction
});
}