开发者社区> 问答> 正文

使用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 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";
	}




struts.xml相关配置:


	<!-- 购物车 -->
	<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的。可能会有些知识漏掉



展开
收起
爱吃鱼的程序员 2020-06-09 16:38:02 669 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    用org.json或json-lib构造一下试试。使用struts的json的话,你需要给set、get方法,因为json的话是通过get方法获取的,或者你使用第三方的json包get都有的

     $.post('url',

    {id:id},

    function(){

    },'<spanstyle="background-color:#E56600;">json');返回类型没有加,识别不到是json数据

    也不行啊。。自顶,求解答,要疯了

    2020-06-09 16:38:19
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载