【发布时间】:2013-11-08 22:51:24
【问题描述】:
这就是我的 AJAX 脚本的样子:
<script>
function addToCart(itemId) {
var url = "./addToCart/" + itemId;
$.get(url, function(response){
$('#shoppingCartId').text(response);
});
}
</script>
它从 JSP 中获取一个 itemId,并使用这个 itemId 调用下面的控制器方法。这是控制器方法:
@RequestMapping(value="/addToCart/{itemId}", method=RequestMethod.GET)
public @ResponseBody ShoppingCart addToCart(@PathVariable Long itemId, @ModelAttribute ShoppingCart shoppingCart) {
Item item = itemService.getItemWithId(itemId);
if(item != null) {
shoppingCartService.addItem(shoppingCart, item);
}
return shoppingCart;
}
问题是,我想将响应(购物车对象)放入此表中,该表位于同一个 jsp 上。但是如何?:
<div class="span2" id="shoppingCartId">
<table class="table table-condensed">
<tr>
<td><b>#</b></td>
<td><b>NAME</b></td>
<td><b>PRICE</b></td>
</tr>
<c:forEach items="${shoppingCart.items}" var="item" varStatus="count">
<tr>
<td>${count}</td>
<td>${item.name}</td>
<td>${item.price}</td>
</tr>
</c:forEach>
<tr>
<td></td>
<td></td>
<td><b>Total Price: {shoppingCart.totalPrice}</b></td>
</tr>
</table>
</div>
如果我可以将响应添加到请求属性中,则该表将被完成。但是我怎样才能把这个对象放入请求中呢?还是真的进了桌子?
我认为问题出在这里,在成功函数中:
function(response){
$('#shoppingCartId').text(response);
}
这里我得到了 shoppingCartId DOM 对象(即表所在的分区),并将响应对象(即 shoppingCart)设置为 Text。我什至可以像这样设置 shoppingCart 对象的属性:
function(response){
$('#shoppingCartId').text(response.totalPrice);
}
并且对象的totalPrice会显示在看到表格的jsp上。但是如何将这个响应对象直接放到表中呢?正如我已经说过的,如果我可以像任何其他 java 对象一样将响应添加到请求属性中,那么该表将被完成。但是我怎样才能把这个 JSON 对象放入请求中呢?还是真的进了桌子?
【问题讨论】:
标签: javascript jquery json spring jsp