我正在使用JSP编写一个站点。我在下面添加了一个代码段。
我遇到的问题是,每次页面加载javascript中的addBookmark()
方法都会被执行但我看不到警报。当我按下按钮时,我看到警报,但未调用addBookmark()
方法。造成这种奇怪行为的原因是什么?
<% User user = new User() %>
<script type="text/javascript">
function add()
{
<% user.addBookmark(); %>
alert("addBookmark");
}
</script>
<button type="button" style="float: right" onclick="add()">Bookmark</button>
谢谢你提前!
答案 0 :(得分:3)
在页面加载时执行JSP,因为JSP中的所有命令都在您的服务器上执行。 相反,Javascript只在浏览器中执行。
所以你看到的是服务器正在构建页面,执行函数然后输出页面。 该功能不再在您的JavaScript中。至少不会,如果它本身没有输出一些javascript代码。
单击该按钮时,jsp代码已经执行。如果你想在那一刻执行代码,你需要用javascript而不是jsp来编写代码,或者使用其他请求来调用它。
答案 1 :(得分:3)
因为JSP不直接与浏览器通信,所以它也不知道浏览器对页面的作用以及用户的作用。它只是一个简单的解释器,遍历您的代码并查找<%
。执行<%
和%>
之间的任何代码,其余代码只会写入浏览器。这意味着JSP解释器不会读取您的JavaScript,服务器只会添加书签。
您要找的是要求服务器实际添加书签。像mypage.jsp?addBookmark=true
这样添加书签的东西。