<input type = "button" class = "btn" value = "Place Order" onclick = "my()">
<script type = "text/javascript">
<% String resp= session.getAttribute("jsonData").toString();%>
const jso = "<%=resp%>"
function my(){
alert(jso);
}
</script>
Я хочу получить переменную JSP и сохранить ее в javascript и показать в предупреждении, но когда я делаю это, моя функция возврата функции onclick не определена.
Я рекомендую вам дать кнопке идентификатор и сделать window.addEventListener("DOMContentLoaded", () => { const jso = "<%=resp%>"; document.getElementById("myButton").addEventListener("click", (e) => { alert(jso); }); })
и удалить встроенный обработчик событий.
mplungjan теперь ничего не показывает в консоли.
Какая консоль? Вы предупреждаете вещи. Если хотите в консоли, используйте console.info и если не получится, то скорее всего будет ошибка
mplungjan в консоли ничего не показывает, кроме предупреждений и ошибок.
Это должно работать. Если нет, то происходит что-то еще
Здесь я не добавляю
<% String resp= session.getAttribute("jsonData").toString();%>
по понятным причинам
window.addEventListener("DOMContentLoaded", () => {
const jso = "<%=resp%>";
document.getElementById("myButton").addEventListener("click", (e) => {
alert(jso);
});
})
<input type = "button" id = "myButton" class = "btn" value = "Place Order">
У вас, вероятно, есть ошибка JavaScript в этой строке:
const jso = "<%=resp%>"
resp
происходит от атрибута с именем jsonData
, поэтому я предполагаю, что он содержит JSON. Свойства и строковые значения в JSON заключены в двойные кавычки. В следующем небольшом примере уже показана ошибка, которую, как я ожидаю, вы получите:
const jso = "{"key": "value"}"
Открытие "
закрывается не последним "
, а первым в вашем JSON. Другими словами, вы выводите недопустимый JavaScript.
Лучшее решение — правильно экранировать JSON. Я рекомендую использовать Apache Commons Text 1.10.0. При правильном импорте:
const jso = "<%=StringEscapeUtils.escapeJson(resp)%>"
Это правильно экранирует любые небезопасные символы, включая "
, в resp
перед его выводом.
Это работает как шарм, большое спасибо. Мне нужна небольшая помощь от вас, как я могу снова преобразовать этот jso в JSON
var response=JSON.parse(resp) // Это работает нормально console.info(response) response.json().then(data => { //заказ сгенерирован успешно console.info(data) InitialClientModule(data) }) .catch(error => { console.info(error) alert("ошибка инициирования платежа") }) но это выдает ошибку responses.jsp:19 Uncaught TypeError: response.json не является функцией в моем (responses.jsp: 19:14) в HTMLInputElement.onclick (responses.jsp:10:83) что мне делать?
Щелкните правой кнопкой мыши веб-страницу, выберите «Просмотр исходного кода» и вставьте соответствующие части вместо JSP.