JSP页面onclick事件失效

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP页面onclick事件失效相关的知识,希望对你有一定的参考价值。

我是用的Eclipse开发的JSP代码,在一个JSP页面查询数据后跳转到servlet进行处理,得到结果后返回该JSP页面。
之前一直没有问题,但今天下午忽然出现问题,返回JSP页面后,JSP页面的所有按钮的onclick事件都失效了,点击的时候会报错误“必须要有物件”,很费解,也不了解为什么会出现这个问题,拜请大侠们赐教,十分感谢!

应该是你jsp文件中调用 onclick 函数所在文件的路径有问题;
servlet 跳转 会改变 调用文件的 相对路径;
所以在调用js文件或者 css 文件,最好不要采用./ ../ 等方式,而采用<%=basePath%> 绝对路径。
参考技术A 可以用alert()来测试
或者重启web服务器
参考技术B 把代码贴出来,光这么说也没法判断是哪里出错啊 参考技术C 必须要有物件 ?? 你翻译的?
把出错地方的源码贴上来啊!

为啥在重新加载页面时触发onclick事件

【中文标题】为啥在重新加载页面时触发onclick事件【英文标题】:Why onclick event triggered when page is reloaded为什么在重新加载页面时触发onclick事件 【发布时间】:2022-01-10 23:37:03 【问题描述】:

所以,我的 .cshtml 文件中有一个按钮:

<div>
    <button id='btn-next' name='next' type='button' onclick='function f() 
         @ 
            Console.WriteLine("BeforeCalling");
            myClass test = new myClass();
            test.TestMethod("123");
            Console.WriteLine("AfterCalling");
          
          ' class='btn btn-block btn-secondary'>justAButton</button>
</div>

当我的页面重新加载时,为什么它会“点击”(我在终端中看到控制台输出)?但是,如果我手动单击按钮 - 什么也不会发生。它仅适用于页面重新加载。

【问题讨论】:

【参考方案1】:

onclick 是一个客户端 JavaScript 事件处理程序。所以无论你想做什么都发生在用户的浏览器中。

然而,Razor 语法由服务器执行任何东西被发送到客户端。 Razor 正在执行以生成服务器发送给用户的 HTML,然后由浏览器解释。但在浏览器呈现 HTML(并注册任何 JavaScript 事件处理程序)时,服务器已经完成。

所以这基本上意味着您不能让服务器端代码作为客户端事件的一部分运行。当生成 HTML 并且没有任何逻辑发送到客户端时,您的 Razor 代码将运行(您可以通过查看浏览器中的 HTML 源代码来检查)。

如果您希望服务器在客户端事件发生时执行某些操作,您需要让客户端(=浏览器)与服务器进行通信,例如使用 AJAX 请求。或者,如果您想在不必处理 JavaScript 的情况下解决此问题,您可以研究 Blazor。

【讨论】:

以上是关于JSP页面onclick事件失效的主要内容,如果未能解决你的问题,请参考以下文章

jsp中onclick可以传递参数吗

div的onclick事件怎么失效了?

onclick 在火狐中定义失效 如何解决

onclick事件中传参

JS问题。为啥onclick事件单击一次后,在页面无刷新的情况下,单击第二次无效?

onclick 事件与对象