2017-03-17 132 views
0

我只想在用户第一次单击“添加到购物篮”时将项目添加到购物篮中,但每次刷新页面时都会再次添加它。每次刷新页面时都会运行JSP函数

这里是我的代码,添加项目到篮下

<% 
    String empty = request.getParameter("emptyBasket"); 
    if (empty!=null) { 
     basket.clearBasket(); 
    } 

    String item = request.getParameter("addItem"); %> 

<script> 
    window.onload = function(){ 
     if(localStorage.getItem("notFirstTime") == null) { 
      <% basket.addItem(item); %> 
      localStorage.setItem("notFirstTime", true); 
     } 
    } 
</script> 

<html> 
<body> .... 

正如你可以看到我已经使用在window.onload方法试过,但它并不适用于某些原因。让我知道如果你需要看到更多的代码,我会更新。

谢谢

+0

我想你应该更好地理解'JSP'页面是如何工作的。这些页面上的所有'Java'代码都是在页面加载并转换为'HTML','JavaScript'或'CSS'代码之前执行的,这意味着<%basket.addItem(item); %>'将始终执行。 – Titus

回答

1

JSP在服务器上运行。 JavaScript在浏览器上运行。服务器端代码首先在服务器上运行以生成页面。然后通过网络将它发送到运行JavaScript的浏览器。 basket.addItem(item)将始终作为页面生成过程的一部分运行,因为它是服务器端代码。

对于存储这些值,您可能需要考虑cookie(对于匿名用户)或DB(对于已通过身份验证的用户)。

+0

谢谢你的回复,你会怎么建议我这样做呢? –

+0

@JamesMcCutcheon Cookies通常用于此任务,特别是在用户是匿名的情况下。如果这个操作是由经过验证的用户完成的,那么您可以使用数据库。 – Joseph

相关问题