You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击按钮提示my()未定义:JSP变量转JS弹窗报错问题

解决「Uncaught Reference Error: my() is not defined」错误及JSP Session变量获取问题

错误原因分析

  • JSP空指针异常:如果session.getAttribute("jsonData")返回null,直接调用toString()会抛出空指针异常,导致后续JavaScript代码(包括my()函数)无法正常解析执行。
  • JavaScript语法疏漏:const jso="<%=resp%>"末尾缺少分号,虽JavaScript有自动分号插入机制,但可能引发意外的语法解析问题。

修复步骤

1. 处理JSP端空值情况

先判断session中的jsonData是否存在,避免空指针异常:

<% 
String resp = "";
if(session.getAttribute("jsonData") != null){
    resp = session.getAttribute("jsonData").toString();
}
%>

2. 修正JavaScript语法并确保函数正常定义

补充分号,保证变量和函数定义逻辑完整:

<input type="button" class="btn" value="Place Order" onclick="my()">

<script type="text/javascript">
  <% 
  String resp = "";
  if(session.getAttribute("jsonData") != null){
      resp = session.getAttribute("jsonData").toString();
  }
  %>
  const jso="<%=resp%>"; // 补充分号
  function my(){
      alert(jso);
  }
</script>

3. 额外优化:转义特殊字符

如果jsonData包含引号、换行等特殊字符,直接赋值会破坏JavaScript语法,可借助工具类转义:

const jso="<%=org.apache.commons.lang.StringEscapeUtils.escapeJavaScript(resp)%>";

若未引入Apache Commons Lang,可手动转义关键字符,比如将双引号替换为\"、换行符替换为\\n。

内容的提问来源于stack exchange,提问作者Naved Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 17:20:42