Введите предложение jquery в тег grails gsp

#javascript #jquery #grails #groovy #syntax

#javascript #jquery #grails #отличный #синтаксис

Вопрос:

Я получаю ошибку множественной компиляции при попытке использовать предложение jQuery в теге grails <g:link>

 var ul = $("#authorList > ul");
ul.append('<li><g:link action="show" controller="author" id="' $('#authorID').val() '"> ' $('#authorField').val() '</g:link></li>')
  

Я получаю ошибку только с jquery внутри атрибута id = «», с этим

 ul.append('<li><g:link action="show" controller="author" id=""> ' $('#authorField').val() '</g:link></li>')
  

Страница работает, но я не могу получить динамические ссылки, каков правильный синтаксис?


URI: /ComplexTables/book/создать класс
org.codehaus.groovy.control.Ошибка множественной компиляции
: ошибка запуска: 19: недопустимый символ тела строки после знака доллара; решение: либо экранировать буквальный знак доллара » $ 5″, либо заключить в скобки выражение значения «$ {5}» @ строка 19, столбец 210. l() ‘»‘, 35, it) { return «‘ $(‘ошибка #authorI ^ 1


Около 35 строки grails-appviewsbook_form.gsp

 function appendAuthor(ev) {
34:        var ul = $("#authorList > ul");
35:        ul.append('<li><g:link action="show" controller="author" id="' $('#authorID').val()'"> ' $('#authorField').val() '</g:link></li>')
36:    }
37:</script>
  

Комментарии:

1. gsp предварительно компилируются на сервере. Я был бы очень удивлен, что jQuery сможет это сделать.

2. поместите js во внешний ресурс, и все будет в порядке

3. используя внешний файл, gsp не компилирует тег <g:link, помещая тег <g:link непосредственно в html

4. я попробую просто использовать обычный <a href=»»> без тега gsp

5. использование обычного <a> сработало, я хотел бы запросить сервер для тега с <g:link>, но я думаю, что это невозможно

Ответ №1:

Я не знаю GSP, но обычно идентификатор не может начинаться с числа.

«Использование символов, кроме букв ASCII, цифр, ‘_’, ‘-‘ и ‘.’ может вызвать проблемы с совместимостью, поскольку они не были разрешены в HTML 4. Хотя это ограничение было снято в HTML 5, идентификатор должен начинаться с буквы для совместимости.»

И не лучше ли было бы, если бы вы использовали просто метод DOM getElementById () вместо jQuery

 ul.append('<li><g:link action="show" controller="author" id="sth_' document.getElementById('authorID').value '"> ' document.getElementById('authorID').value '</g:link></li>')
  

Комментарии:

1. в этом случае атрибут id не является обычным идентификатором всех тегов, в этом теге gsp вы добавляете в id первичный ключ элемента, который хотите отобразить, gsp компилирует этот тег в обычный тег <a href=»» с маршрутом к элементу, который должен возвращать <a href=»некоторый идентификатор маршрута / шоу / динамики, полученный с помощью jquery»

2. я попытался с document.getElementById, и gsp также возвращает ошибку компиляции, ожидающую ‘=’ после имени атрибута (action =»show» controller =»author» id =»‘ document.getElementById(«AuthorID»).value ‘»)