java/jsp代码中的javascript

java/jsp代码中的javascript,javascript,jsp,Javascript,Jsp,我已经在里面编写了javascript代码 myjsp.jsp <% try { String id=request.getParameter("id"); %> <script type="text/javascript" > alert("TRY"+ <%=id %>); document.getElementById("mytext").readonly="readonly"; </scrip

我已经在里面编写了javascript代码

myjsp.jsp

<%
try {
    String id=request.getParameter("id");
%>
    <script type="text/javascript" >
        alert("TRY"+ <%=id %>);
        document.getElementById("mytext").readonly="readonly";
    </script>
<%
} catch (Exception e) {
%>
    <script type="text/javascript" >
        alert("CATCH"+<%=e%>);
    </script>
<%
}
%>

发生这种情况的原因是,当您没有传递
id
的请求参数时,正如您所提到的,它将是
null
。在这种情况下,将生成以下JavaScript:

alert("TRY" + null);
这是有效的JavaScript,所以这就是为什么会看到
TRYnull

但是,如果传入
id
请求参数,将生成以下JavaScript:

alert("TRY" + foo);
尽管这在语法上是有效的JavaScript,但几乎肯定会产生错误(因此不会显示
警报
),因为这里
foo
是一个很可能是
未定义的变量

如果查看JavaScript控制台,您可能会看到如下内容:

Uncaught ReferenceError: foo is not defined
您需要做的是在scriptlet周围加引号,以便
id
的值被视为
字符串而不是变量,即

alert("TRY <%= id %>");
alert(“TRY”);

JSP和JavaScript不同步运行。JSP生成HTML/JavaScript。在浏览器中打开页面,右键单击该页面并查看源代码以查看您自己。仅供参考,如果异常是例如不可解析日期,并且带有双引号,则将在浏览器控制台中显示错误!
alert("TRY <%= id %>");