Я пытаюсь передать несколько параметров remoteFunction в чашах Грааля, но я изо всех сил пытаюсь отформатировать его правильно
Я хочу передать в значении части данных на странице плюс значение текстового поля, из которого я только что снабдил вкладками, таким образом, в моем onblur у меня есть что-то вроде:
onblur=${remoteFunction(action:'dave', update:'pack'+it.id,
params:[denom:document.getElementById(denomValue+${it.id}).value ,
amount:this.value ])}
Это не компилирует - ни один не делает перестановок, которые я могу придумать с переменными числами одинарных кавычек и символов ESC..
Я думаю, что действительно озадачивает меня, thatI Дон; t действительно понимают то, что я пытаюсь создать здесь. Похож на это с помощью кода JSP для создания JavaScript который iwill быть позже выполненным? Когда это выражение становится оцененным - это в то время, когда страница компилируется - или является a=it в то время, когда oblur называют?
Любая справка значительно ценится.
Я использую алгоритм шунтирования для создания RPN. Затем я «компилирую» RPN в маркированную форму, которая может быть выполнена (интерпретированно) повторно без повторного анализа выражения.
-121--3977948-Если вы хотите сделать это правильно, кажется, вам нужно нанять человека, чтобы перевести для вас. Предпочтительно носитель языка. Я уверен, что вы можете найти некоторые услуги с помощью быстрого поиска в Google.
-121--2664691-Похоже, что вы перепутали серверный код с клиентским.
Код Grails будет оцениваться при «построении» страницы для отправки в браузер клиента.
Код Javascript будет вычислен после доставки страницы в браузер.
С учетом этого рассмотрим ваше назначение onblur:
onblur=${remoteFunction(
action:'dave',
update:'pack'+it.id,
params: [denom: document.getElementById(denomValue+${it.id}).value,
amount: this.value ])}
Учитывая, что вызов $ {remoteFunction...} является тэгом Grails, он будет вычисляться на сервере, генерировать фиксированную последовательность, а затем отправляться клиенту. Все внутри вызова должно быть действительным кодом Groovy.
Посмотрите на карту параметров, вы добавили несколько Javascript в значение denom, в код Groovy:
document.getElementById(denomValue
затем вы пытаетесь добавить значение из Groovy
+${it.id}
, затем некоторые Javascript снова
).value
Компилятор Groovy попытается оценить Javascript как код Groovy и не получится.
Если требуется получить доступ к параметрам на стороне клиента в Javascript, необходимо обработать Javascript самостоятельно (а не использовать тэг remoteFunction), например, для обработки удаленного вызова:
var path=${createLink(action:'dave',
params: [amount:this.value])}
+ "&denom="
+ document.getElementById(denomValue+${it.id}).value
Также необходимо обработать удаленный ответ самостоятельно с помощью Javascript для обновления элементов «пакета». Всегда можно посмотреть, что создает вызов remoteFunction, скопировать его на страницу и отредактировать для выполнения необходимых действий.
HTH