- JScript code
function addProduct(img,productId) { $("#buy").css("display","none"); $("#cartInfo_"+productId).html('<img align="bottom" src="../images/load.gif" width="14" height="14" style="display:inline" align="bottom"/> 购买中...'); $.post("../cart/cart!add.action", { id: productId, time: (new Date()).getTime() }, function(json){ if(json.ok) { alert(json.ok); //没有添加成功 $("#buy").css("display","block"); $("#cartInfo_"+productId).html('<img align="bottom" src="../images/wrong.gif" width="14" height="14" style="display:inline" align="bottom"/> <span style="color:red">购买失败</span>'); } else { //添加成功 $("#cartInfo_"+productId).html('<img align="bottom" src="../images/right.gif" width="14" height="14" style="display:inline" align="bottom"/> 购买成功'); var timeId=setTimeout(function(){ clearTimeout(timeId); $("#buy").css("display","block"); $("#cartInfo_"+productId).html(""); }, 2000); } },"json" ); }
- Java code
public String add() { System.out.println("id:"+id); CartDAO dao=DAOFactory.getCartDAO(); //String flag=DAOFactory.getCartDAO().add(id);//返回yes or no String flag=dao.add(id); if(flag.equals("yes")) { //如果存在,返回OK ok=true; } else { ok=false; } return "success"; }
- Java code
public Map<Integer, CartItem> store = new HashMap<Integer, CartItem>(); public String add(int id) { if (store.containsKey(id)) { // 是否已经添加购买 return "yes"; } else { Product pro; try { pro = DAOFactory.getProductDAO(Constant.TYPE_BOOK).findByProId( id); CartItem cart = new CartItem(); cart.setNum(1); cart.setProduct(pro); cart.setBuy(true); store.put(id, cart); return "no"; } catch (Exception e) { e.printStackTrace(); } } return null; }
json能通过,但是每次都是购买成功,我想知道这是为什么,我用main测试这个上面这个方法,添加两个重复的ID是返回yes的,但是网页上就不行,点一次再点一次还是购买成功,我想知道是不是和HashMap生命周期,请大家帮帮忙,看看哪里不对。上面这个方法在struts2里的一个action
------解决方案--------------------
你用的struts2 吧,struts2不是单例的,你每次请求都new一个action,所以store都没数据。
------解决方案--------------------
可以把store放到session里。