<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函数返回函数my没有定义。
您可能在这一行中出现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
中的任何不安全字符,包括"
这必须有效。如果没有,那么上还有其他问题
这里我不添加
<% 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">