#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 ‘»)