使用struts2和json时,jsp页面的json返回数据为空
最近在做一个购物车的小功能,找了一个项目进行改造。发现我的项目在获取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 href="javascript:;" 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的。可能会有些知识漏掉
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
自顶,求解答,要疯了
也不行啊。。
$.post('url',
{id :id},
function() {
},'json');返回类型没有加,识别不到是json数据
get 都有的
使用struts的json的话,你需要给set、get方法,因为json的话是通过get方法获取的,或者你使用第三方的json包
用org.json或json-lib构造一下试试。