我是新手,我正在尝试刷新菜单值(购物车内容)而不重新加载整个页面。
这是我的问题:警报检查中的$ {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()});
}
答案 0 :(得分:2)
alert(${cartSession.getCartContent()});
您无法从Javascript调用服务器端Java方法。
Javascript在客户端浏览器上执行,服务器上的Java。
您可以做的是处理表单发布VIA Ajax。向服务器发出POST请求,返回实际响应(带有成功/失败标志)并通过JQuery / Javscript执行任何操作:
使用Spring的这个简单示例: http://www.raistudies.com/spring/spring-mvc/ajax-spring-mvc-3-annonations-jquery/
答案 1 :(得分: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());
}