首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从控制器的ModelMap中将$.ajax数据设置为List<Entity>?

问如何从控制器的ModelMap中将$.ajax数据设置为List<Entity>?
EN

Stack Overflow用户
提问于 2017-03-21 21:14:38
回答 2查看 155关注 0票数 1

我想实现一个简单的购物车功能,用户可以看到他们添加到购物车中的商品,当用户点击购买按钮时,他可以购买购物车中的所有商品。

@Controller

代码语言:javascript
复制
@RequestMapping(value = "/shoppingcart",method = RequestMethod.GET)
public String shoppingCart(ModelMap model) {
    //get goods info of the user's shopping cart
    List<ShoppingCartInfo> shoppingCartInfos = shoppingService.findShoppingCardInfoByUserId(getCurrentUserId());
    model.put("shoppingCartInfos",shoppingCartInfos);
    return "shoppingcart.jsp";
}

JSP

代码语言:javascript
复制
<body>
<%@include file="common/navbar.jsp"%>
<div class="container">
    <table id="shoppingCartTable" class="table table-striped table-hover results ellipsis-table">
        <thead>
        <tr>
            <th>编号</th>
            <th>商品标题</th>
            <th>价格</th>
            <th>购买数量</th>
        </tr>
        </thead>
        <tbody>
            //show goods info
            <c:forEach var="shoppingCartInfo" items="${shoppingCartInfos}" varStatus="count">
                <tr>
                    <td >${count.index + 1}</td>
                    <td><a href="${AppContext}item/showItem/${shoppingCartInfo.itemId}">${shoppingCartInfo.itemTitle}</a></td>
                    <td>${shoppingCartInfo.cost}</td>
                    <td>${shoppingCartInfo.itemNum}</td>
                </tr>
                addData(${shoppingCartInfo})
            </c:forEach>
        </tbody>
    </table>
    <div class="col-md-offset-10" style="margin-top: 20px">
        <a href="javascript:void(0)" class="btn btn-raised btn-primary" id="buyAllItemsBtn">购买</a>
        <a href="javascript:history.back(-1);" class="btn btn-raised btn-primary">退出</a>
    </div>

</div>


<%@include file="common/footer.jsp"%>

​

AJAX

代码语言:javascript
复制
<script type="text/javascript">

$('#shoppingCartTable').DataTable({
    "language": {
        "url": "${AppContext}resources/lang/datatables_zhcn.json"
    },
    "pagingType": "full_numbers"
})

$('#buyAllItemsBtn').click(function () {
    $.ajax({
        type:"POST",
        url:"${AppContext}buyer/buyAllItems",
        /*traditional: true,*/
        data:${shoppingCartInfos},//  **the error is here**
        success:function (result) {
            if(result.resultStatus == "SUCCESS") {

            }else {
                showModal("购买失败",result.resultMsg,"");
            }
        }
    })
})

​

错误:Uncaught SyntaxError: Unexpected token {

我的问题:

(1)数据:${shoppingCartInfos}我想发送数据给${AppContext}buyAllItems,但没有成功(2) ${shoppingCartInfos}值为ShoppingCartInfo{shoppingcartId=4,userId=22,itemId=10},对象有列表对象类名,可以删除吗?

我对这些知识不太熟悉,谢谢你的帮助

EN

回答 2

Stack Overflow用户

发布于 2017-03-21 21:24:02

看看JSON stringify。这可能就是您需要的:http://www.hostingadvice.com/how-to/javascript-object-to-string-tutorial/

代码语言:javascript
复制
var data = JSON.stringify({
        infos: ${shoppingCartInfos}
});

$.ajax({
        type:"POST",
        url:"${AppContext}buyer/buyAllItems",
        data:data,
票数 0
EN

Stack Overflow用户

发布于 2017-03-22 09:35:29

这是我的疏忽。我覆盖了ShoppingCartInfo类的toString()方法

代码语言:javascript
复制
@Override
public String toString() {
    return "ShoppingCartInfo{" +
            "shoppingcartId=" + shoppingcartId +
            ", userId=" + userId +
            ", itemId=" + itemId +
            ", itemTitle='" + itemTitle + '\'' +
            ", cost=" + cost +
            ", itemNum=" + itemNum +
            ", createTime=" + createTime +
            '}';
}

删除ShoppingCartInfo是可以的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42928248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档