alert() 在 JSP 中不起作用

test()在提交之前,我正在调用 Javascript函数进行验证。此函数具有 Java 脚本,其中返回验证逻辑并更新了一个布尔变量。使用这个布尔变量,我正在检查这个 js 函数是否应该返回 true 或 false。如果为假,则它是验证的否定情况,而验证是真正的肯定情况。


一般代码是这样的:


<% boolean check = false ; %>

<script>

function test(){

/*

* java code for updating test variable for validating values on the jsp page

*/


if(!check){

<% System.out.println("this runs ! "); %> // line 1

alert("validation fails"); // line 2

return false;

}

else return true;


}

</script>

..

..

<input type="submit".. onclick="return test()">

..

..

是不是哪里出了问题?我一直在尝试很多东西来运行第 1 行,但它没有。我的代码执行在第 1 行的 if 检查中到达,但不提醒即第 2 行,验证也不起作用。


有人遇到过类似的问题吗?分辨率是多少?


FFIVE
浏览 402回答 3
3回答

不负相思意

您非常混淆服务器端代码和客户端代码之间的区别。从概念上将它们视为完全独立的。您的服务器端代码是这样的:boolean check = false;System.out.println("this runs ! ");有两点需要注意:您定义了一个从未使用过的变量。该消息将始终打印到输出,因为没有理由不应该。您的客户端代码是这样的:function test(){&nbsp; &nbsp; if(!check) {&nbsp; &nbsp; &nbsp; &nbsp; alert("validation fails");&nbsp; &nbsp; &nbsp; &nbsp; return false;&nbsp; &nbsp; }&nbsp; &nbsp; else return true;}如果您成功调用,test()您会发现这将在浏览器的控制台上产生错误,因为check未定义。至于如何纠正这一点,这实际上取决于您在这里实际尝试做什么。“我想在 JavaScript 中使用 Java 变量”不是您要解决的问题。退一步说,编写此代码背后一定有原因。不管这个原因是,它很可能是有一个更好的办法,而不是继续沿着这条道路要做到这一点,因为你承担了路径错了弯,而前。但是,如果您只想将该变量输出到 JavaScript,您可以执行以下操作:if(<%=!check%>) {&nbsp; &nbsp; alert("validation fails");&nbsp; &nbsp; return false;}这将输出在!check server上评估的结果,该结果将是嵌入在 JavaScript 代码中的原始字符串。我不是100%确定 Java/JSP/etc. 以这种方式评估,但希望你能明白。当然,检查生成的客户端代码以查看它实际输出的内容。 理想情况下,它最终会是这样的:if(true) {&nbsp; &nbsp; alert("validation fails");&nbsp; &nbsp; return false;}当然,如果这一点挥手掩盖了更多问题:/** java code for updating test variable for validating values on the jsp page*/那么我们将无法在这个问题的范围内确定这一点。

临摹微笑

这里的 'check' 是一个 Java 变量,而不是 javascript 变量。所以试试if(<%=!check%>)

守着一只汪

我看到的问题是, 的声明boolean check是在 Java 中的,但它的测试是在生成的页面中的 Javascript 中。check生成的页面中没有 Javascript 变量。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java