为了账号安全,请及时绑定邮箱和手机立即绑定

alert() 在 JSP 中不起作用

alert() 在 JSP 中不起作用

FFIVE 2021-08-19 19:59:57
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 1alert("validation fails"); // line 2return false;}else return true;}</script>....<input type="submit".. onclick="return test()">....是不是哪里出了问题?我一直在尝试很多东西来运行第 1 行,但它没有。我的代码执行在第 1 行的 if 检查中到达,但不提醒即第 2 行,验证也不起作用。有人遇到过类似的问题吗?分辨率是多少?
查看完整描述

3 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

您非常混淆服务器端代码和客户端代码之间的区别。从概念上将它们视为完全独立的。您的服务器端代码是这样的:


boolean check = false;

System.out.println("this runs ! ");

有两点需要注意:


您定义了一个从未使用过的变量。

该消息将始终打印到输出,因为没有理由不应该。

您的客户端代码是这样的:


function test(){


    if(!check) {

        alert("validation fails");

        return false;

    }

    else return true;


}

如果您成功调用,test()您会发现这将在浏览器的控制台上产生错误,因为check未定义。


至于如何纠正这一点,这实际上取决于您在这里实际尝试做什么。“我想在 JavaScript 中使用 Java 变量”不是您要解决的问题。退一步说,编写此代码背后一定有原因。不管这个原因是,它很可能是有一个更好的办法,而不是继续沿着这条道路要做到这一点,因为你承担了路径错了弯,而前。


但是,如果您只想将该变量输出到 JavaScript,您可以执行以下操作:


if(<%=!check%>) {

    alert("validation fails");

    return false;

}

这将输出在!check server上评估的结果,该结果将是嵌入在 JavaScript 代码中的原始字符串。我不是100%确定 Java/JSP/etc. 以这种方式评估,但希望你能明白。当然,检查生成的客户端代码以查看它实际输出的内容。 理想情况下,它最终会是这样的:


if(true) {

    alert("validation fails");

    return false;

}

当然,如果这一点挥手掩盖了更多问题:


/*

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

*/

那么我们将无法在这个问题的范围内确定这一点。


查看完整回答
反对 回复 2021-08-19
?
临摹微笑

TA贡献1982条经验 获得超2个赞

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


查看完整回答
反对 回复 2021-08-19
?
守着一只汪

TA贡献1872条经验 获得超3个赞

我看到的问题是, 的声明boolean check是在 Java 中的,但它的测试是在生成的页面中的 Javascript 中。check生成的页面中没有 Javascript 变量。


查看完整回答
反对 回复 2021-08-19
  • 3 回答
  • 0 关注
  • 401 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信