2014-01-10 83 views
0

我是一個新手,我試圖在不重新加載整個頁面的情況下刷新菜單值(購物車內容)。使用jQuery/Ajax獲取會話值

這是我的問題:警報檢查中的$ {cartSession.getCartContent()}值爲Undefinied。

如果可以幫忙,在服務器端我使用Spring。

$(document).ready(function(){ 
      var $form = $("#panierform"); 
      $form.submit(function(){ 
       $.post($(this).attr('action'), $(this).serialize(), function(response){ 

       },'json'); 
       alert("Ajouté avec succès !"); 
       refreshCartValue(); 
       return false; 
      }); 

     }); 

     function refreshCartValue() { 
      alert(${cartSession.getCartContent()}); 
      $("#cartValue").text(""); 
      $("#cartValue").text(${cartSession.getCartContent()}); 
     } 
+2

不幸的是,你不能這樣做,因爲'$ {cartSession.getCartContent()}'只能在服務器上執行,因此它只會包含最初返回的值頁。您需要在執行ajax請求時從服務器返回該值,然後在該ajax請求成功時訪問該值。 –

+0

準確地說,我如何從響應中檢索會話值? – GSDa

+0

你不行。您的服務器將發送會話值作爲響應。 –

回答

2
alert(${cartSession.getCartContent()}); 

你不能從JavaScript調用服務器端的Java方法。

Javascript在服務器上的客戶端瀏覽器Java上執行。

你可以做的是處理表格發佈威盛Ajax。做一個POST請求到服務器,返回實際響應(成功/失敗的標誌),做任何你想做的事情通過JQuery/Javscript:

按照同春這個簡單的例子: http://www.raistudies.com/spring/spring-mvc/ajax-spring-mvc-3-annonations-jquery/

0

謝謝你你的反應,是非常有用的教程,這裏是我的代碼,現在確實工作:

$(document).ready(function(){ 
      var $form = $("#panierform"); 
      $form.submit(function(e){ 
       $.post($(this).attr('action'), $(this).serialize(), function(response){ 
        alert("Ajouté avec succès !"); 
        refreshCartValue(response); 
       },'json'); 
       e.preventDefault(); 
       return false; 
      }); 

     }); 



     function refreshCartValue(response) { 
      $("#cartValue").text(""); 
      $("#cartValue").text(response); 
     } 

一定要添加e.preventDefault();什麼我錯過了之前從控制器返回值作爲ResponseBody:

@RequestMapping("pages/addToCart") 
    public @ResponseBody String addToCart(HttpSession session, @RequestParam String produitId, @RequestParam Long quantite){ 

     // 
     return String.valueOf(cart.getCartContent()); 
    }