未定义未捕获引用错误my()


<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">

相关内容

最新更新