0

我正在使用 JSP 编写一个站点。我在下面包含了一个代码片段。

我遇到的问题是每次页面加载时addBookmark()都会执行 javascript 内部的方法,但我没有看到警报。当我按下按钮时,我看到了警报,但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>

谢谢是提前!

4

2 回答 2

3

JSP 在页面加载时执行,因为 JSP 中的所有命令都在您的服务器上执行。相反,Javascript 仅在浏览器中执行。

所以你看到的是服务器正在构建页面,执行功能,然后输出页面。该功能不再在您的 javascript 中。如果它本身不输出一些javascript代码,至少不会。

当您单击按钮时,jsp 代码已经执行。如果你想在那一刻执行代码,你需要用 javascript 而不是 jsp 编写它,或者使用另一个请求调用它。

于 2012-04-22T18:59:30.360 回答
3

因为 JSP 不直接与浏览器通信,也不知道浏览器对页面做了什么以及用户做了什么。它只是一个简单的解释器,可以遍历您的代码并查找<%. 任何介于两者之间并被执行的代码,<%其余%>的只是被写入浏览器。这意味着 JSP 解释器不会读取您的 JavaScript,服务器只会添加书签。

您正在寻找的是对服务器的实际添加书签的请求。mypage.jsp?addBookmark=true诸如添加书签之类的东西。

于 2012-04-22T18:59:31.043 回答