最近在做一个购物车的小功能,找了一个项目进行改造。发现我的项目在获取strus返回的json对象时,取不到值,找了一整天都想不出个所以然。
我的项目json返回显示如下:
网上找的项目返回显示如下(正确显示):
这是jsp页面的jquery代码:
<script type="text/javascript"> $(function(){ $(".buy").click(function(){ var t = this; var id = $(this).prev().val(); $.post( "${pageContext.request.contextPath }/cart/cartAction!doBuy", {"cid":id}, function(date){ if (date.ok) { $(t).html("<img src='${pageContext.request.contextPath }/myimages/right.gif'/>"+ "成功添加到购物车!"); } else { $(t).html("您已经购买过该商品"); } return; } ); }); }); </script>
<td class="altbg2"> <input type="hidden" value=${dishesId } id="cid"/> <a class="buy">购买</a> <span id="cartinfo"></span> </td>
action代码:
/** * 购买商品 * @return */ public String doBuy(){ try { //获取session中的购物车 cartService = (CartService) sessionMap.get(ConfigUtil.CART_KEY); if (cartService == null) { cartService = new CartServiceImpl(); sessionMap.put(ConfigUtil.CART_KEY, cartService); } ok = cartService.add(cid); } catch (Exception e) { e.printStackTrace(); LogInfoUtil.logError("doBuy", e); return "error"; } return "buy_success"; }
/** * 获取购物车清单 * @return */ public String cartList(){ try { cart = (ICartService) sessionMap.get(Constant.CART_KEY); if (cart==null) { cart = new CartServiceImpl(); sessionMap.put(Constant.CART_KEY, cart); } buyList = cart.getBuyList();//购买列表 deleteList = cart.getDeleteList();//删除列表 if (buyList.size()==0&&deleteList.size()==0) { cart.load(CookieUtil.findCookie(Constant.CART_KEY, request)); } CookieUtil.addCookie(Constant.CART_KEY, cart.store(), response); String[] cost = cart.cost().split("-"); saveCost = Double.parseDouble(cost[0]); totalCost = Double.parseDouble(cost[1]); } catch (Exception e) { e.printStackTrace(); return "error"; } return "cart_list"; }
<!-- 购物车 --> <package name="cart" extends="json-default" namespace="/cart"> <action name="cartAction" class="com.lwj.sys.action.CartAction"> <result name="cart_list"> /customer/cart_list.jsp </result> <result name="buy_success" type="json"> </result>
第一次点击“购买”时,buyList为null,但再次点击时,因为已经购买过了,应该会正常显示,又返回数据。但第二次点击时,也是为null。
action中没问题,相关的字段都是有值的,就是json这里返回的对象为空。
没有报错。。
实在是想不到了,才来问问大家有没有什么意见,不知道是不是漏了些什么,没学过json,都是弄这个小功能的时候看了一下struts整合json的。可能会有些知识漏掉
用org.json或json-lib构造一下试试。使用struts的json的话,你需要给set、get方法,因为json的话是通过get方法获取的,或者你使用第三方的json包get都有的
$.post('url',
{id:id},
function(){
},'<spanstyle="background-color:#E56600;">json');返回类型没有加,识别不到是json数据
也不行啊。。自顶,求解答,要疯了版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。