Неперехваченная ошибка ссылки:some_string не определен

#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.