2015-02-23 2 views
1

Мне нужно отправить переменные во время выполнения в js-метод для ajax. Я пытаюсь с помощью этой функции OnClick, но она дает синтаксическую ошибку при клике .:Как цитировать/записывать переменную JSP в JavaScript код встроенного атрибута?

<c:set var="abc" value="${myTaglib:getAbc()}" /> 
<a href="#" onclick="sendAjax(${abc.firstVal}, ${abc.secVal}, ${abc.thirdVal}, ${abc.fourthVal}, ${abc.fifthVal})"> Click Here !!!</a> 

Некоторые из этих значений может иметь пробелы и десятичные в них. По щелчку, я получаю эту ошибку при первом появлении пространства .:

SyntaxError: missing) after argument list 

Действительное HTML выглядит как:

<a onclick="sendAjax(240265, Workplace Ethics Exam, Company Security Policy, Friends Life, ABF/45RFG, 41444.1830)" href="#">Click Here !</a> 

Что не так с этим JS позвонить?

+0

Что такое * актуальный * HTML возвращен? Это точно укажет, где ошибка (-ы) - в этом случае пытается писать недопустимые литералы JS; вероятно, текстовые значения, которые неправильно написаны как строковые литералы. Сама '$ {..}' интерполяция * не * понимает контекст «JavaScript-кода» или как правильно кодировать значение. – user2864740

+0

Теперь, * предполагая, что значения никогда не содержат кавычек (одно или два), тогда 'sendAjax ('$ {abc.firstVal}', '$ {abc.secVal}', ..)' будет "исправлять", что результат. Такой по-прежнему ужасный хак, хотя (поскольку он является ручным и будет «разбиваться случайным образом», если есть кавычки и в некоторых других случаях края); должна быть подходящая функция кодирования - я создал такую ​​на C#, и я уверен, что она похожа на Java/JSP. – user2864740

+0

Связанный/повторяющийся вопрос http://stackoverflow.com/questions/27496052/jsp-variable -as-javasript-function-parameters? rq = 1 (это не точно из-за другого контекста, хотя!) - с едва доступным/адаптивным решением. В идеале был бы «несколько элегантный» способ сделать это. – user2864740

ответ

1

Пробелы в вашем JavaScript-коде, скорее всего, являются синтаксической ошибкой. Если ваши значения имеют пробелы, лучше всего рассматривать их как строки.

onclick="sendAjax('${abc.firstVal}', '${abc.secVal}', ... '${abc.fifthVal}')"> 

Если вы хотите использовать их в качестве номера позже, вы можете использовать функции JavaScript parseInt и parseFloat превратить строки в число.

0

Вы попробовали оставить пространство после последней фигурной скобки?

+0

да, я сделал .. я не уверен, что мне нужно использовать кавычки и избегать их ... Но тогда любая из этих переменных может быть строкой или целым числом Double с десятичной точкой. –

Смежные вопросы