#javascript #ajax #grails
#javascript #ajax #grails
Вопрос:
Я хочу вызвать функцию Ajax с помощью remoteFunction. Но я бы хотел задать имена контроллера и действий с помощью переменных JS. Вот так:
...
var id = 1;
for (var i = 0; i < updater.slaves.length; i ) {
var slave = updater.slaves[i];
var ctrl = slave.data.controller;
var action = slave.data.action;
${remoteFunction(controller: ctrl, action: action, params: "'id=' id", onSuccess: "onSuccessLoadApplications(arguments)", onFailure: "error(arguments)")}
}
Проблема в том, что я не могу получить значения ctrl и action (это нормально для id var).
Итак, возможно ли создать динамический контроллер и аргументы действий для remoteFunction?
Спасибо.
Ответ №1:
Я не думаю, что это возможно использовать remoteFunction
подобным образом.
remoteFunction
это taglib, который будет означать, что он обрабатывается на стороне сервера. На этом этапе javascript не запускается, поэтому вы не можете добавить строку с помощью ‘ ‘.
Короче говоря, код внутри remoteFunction
должен соответствовать допустимому синтаксису Groovy. это означает, что вы не можете вставить javascript, как в примере кода.
Я думаю, что для того, чтобы все заработало, вы должны написать свой собственный javascript для выполнения этой работы ajax.
Комментарии:
1. Работа части «id» зависит от способа обработки taglib, и она может измениться. Проще говоря, разработчики, которые пишут «remoteFunction», не думают о вашем случае динамического изменения имени контроллера
Ответ №2:
Действительно быстро, без тестирования. Кажется, если «‘id =’ id» работает для аргумента params, не должен ли просто «ctrl» работать для контроллера?
Вы пробовали:
${remoteFunction(controller: "'' ctrl", action: "'' action", params: "'id=' id", onSuccess: "onSuccessLoadApplications(arguments)", onFailure: "error(arguments)")}
??
Комментарии:
1. Я пытался, но это не работает. Grails не заменяет строки ‘ctrl’ и ‘action’: (
2. хм, это кажется странным, поскольку параметры «id» работают. Я меняю его, посмотрим, работает ли он сейчас.