2017-03-17 130 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

相關問題