Javascript 使用JQuery/Ajax获取会话值
我是这方面的新手,我正在尝试刷新菜单值(购物车内容),而无需重新加载整个页面 这是我的问题:${cartSession.getCartContent()}警报检查中的值未定义 如果可以的话,在服务器端我使用SpringJavascript 使用JQuery/Ajax获取会话值,javascript,jquery,html,ajax,spring,Javascript,Jquery,Html,Ajax,Spring,我是这方面的新手,我正在尝试刷新菜单值(购物车内容),而无需重新加载整个页面 这是我的问题:${cartSession.getCartContent()}警报检查中的值未定义 如果可以的话,在服务器端我使用Spring $(document).ready(function(){ var $form = $("#panierform"); $form.submit(function(){ $.post($(this).attr
$(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()});
}
不能从Javascript调用服务器端Java方法
Javascript在客户端浏览器上执行,Java在服务器上执行
您所能做的就是通过处理表单过账。向服务器发出POST请求,返回实际响应(带有成功/失败标志),并通过JQuery/Javscript对其执行任何操作:
使用Spring遵循以下简单示例:
感谢您的回复,非常有用的教程,以下是我的代码,它现在可以工作了:
$(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());
}
不幸的是,您这样做是不可能的,因为${cartSession.getCartContent()}
只能在服务器上执行,因此它将只包含最初随当前页面返回的值。相反,在执行ajax请求时,您需要从服务器返回该值,然后在该ajax请求成功后访问该值。确切地说,我如何从响应中检索会话值?您不能。服务器将发送会话值作为响应。
@RequestMapping("pages/addToCart")
public @ResponseBody String addToCart(HttpSession session, @RequestParam String produitId, @RequestParam Long quantite){
//
return String.valueOf(cart.getCartContent());
}