#javascript #jquery
#javascript #jquery
Вопрос:
В классе контроллера я добавил
model.addObject("hostname", hostname);
и попытался поймать его на моей странице jsp с
var hostname=<%=request.getAttribute("hostname")%> ;
Тем не менее, это выдает ошибку
Uncaught ReferenceError:**some_string** is not defined
Что можно сделать, чтобы избежать этого?
Комментарии:
1.
<%=request.getAttribute("hostname")%> ;
Создает ли текстsome_string
, а не строковый литерал"some_string"
? Если это так, первая будет прочитана как переменная, которая не существует. Последнее — это просто обычная строка.2. @VLAZ…it будет просто some_string , а не «some_string».
3. Вот в чем ваша проблема — вы генерируете недопустимый код, который затем выполняется и выдает ошибку.
4. Как избежать этого недопустимого кода?
5. Сгенерируйте код так, чтобы это была допустимая строка. Скорее
"<%=request.getAttribute("hostname")%>"
всего, это сработало бы.
Ответ №1:
Помните: Вы не передаете переменную из одной программы в другую, вы программно генерируете исходный код JavaScript из JSP.
some_string
это имя переменной, но не то, которое вы объявили, поэтому вы получаете ошибку ссылки.
Вам нужно сгенерировать исходный код JS, который даст вам нужный результат.
В большинстве случаев из-за совместимости между JS и JSON вы можете использовать строковый идентификатор JSON для генерации исходного кода, который создает ваши значения (это хорошее универсальное решение, поскольку оно будет правильно работать с кавычками, новыми строками, массивами и т. Д.).
Будьте осторожны, так как если строка содержит </script>
, вам нужно экранировать /
, чтобы предотвратить завершение <script>
элемента. Некоторые сериализаторы JSON будут делать это по умолчанию. Я не знаю, будет ли Java.