2014-01-10 2 views
0

Я новичок в этом, я пытаюсь обновить значение меню (содержимое корзины) без перезагрузки всей страницы.Получить значение сеанса с помощью JQuery/Ajax

Это моя проблема: значение $ {cartSession.getCartContent()} в контрольной проверке не определено.

Если это может помочь, на стороне сервера я использую 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

Вы не можете. Ваш сервер будет отправлять значение сеанса AS в ответ. –

ответ

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

Вы не можете вызвать метод Java на стороне сервера с Javascript.

Javascript выполняется в браузере клиента, Java на сервере.

Что вы можете сделать, это объявление формы отправки VIA Ajax. Сделать запрос POST на сервер, возвращает реальный ответ, (с флагами успех/провал) и делать все, что вы хотите с ним с помощью JQuery/Javscript:

Следуйте этот простой пример с Spring: 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()); 
    } 
Смежные вопросы