【发布时间】:2017-05-19 06:55:41
【问题描述】:
所以我让“DVD”存储按钮的添加到购物车对我的服务器进行 ajax 调用,以检查数据库中是否有足够的 DVD 库存并将其添加到会话中的“购物车” .我觉得我的“调用”是正确的,但不太确定如何让我的 spring 控制器“响应”。我本质上只是想要一个带有“successStatus”和“message”字段的对象返回到 ajax显示给用户。
我在 html 中的按钮
<form method="post">
<p>Enter quantity you would like to purchase :
<input type="number" id="quantity" name="quantity" step="any" min="1" max="${product.quantityInStock}" value="1"></input>
</p>
<input type="submit" class="btn btn-primary" id="addToCart" name="button" value="Add to cart"/>
<input type="hidden" id="jsonProductId" value='${product.id}'/>
</form>
Ajax 调用
$("#addToCart").click(function(event) {
var data = {}
data["productId"] = $("#jsonProductId").val();
data["quantity"] = $("#quantity").val();
$.ajax({
type: "POST",
contentType: "application/json",
url: "addToCart",
data: JSON.stringify(data),
dataType: 'json',
timeout: 600000,
success: function (data) {
//...
},
error: function (e) {
//...
}
});
event.preventDefault();
});
控制器
@Controller
@Scope("session")
public class CartController {
@Autowired
private Cart cart;
@Autowired
ProductService productService;
@RequestMapping(value="/addToCart", method= RequestMethod.POST)
public String searchResults(@RequestBody AddToCartPojo addToCartPojo) {
//do something
}
@RequestMapping(value="/cart", method= RequestMethod.GET)
public String searchResults(Model model) {
model.addAttribute("cartLines",cart.getLines());
model.addAttribute("cartTotalPrice",cart.getTotalPrice());
return "cart";
}
AddToCartPojo
public class AddToCartPojo {
private long productId;
private int quantity;
public long getProductId() {
return productId;
}
public void setProductId(long productId) {
this.productId = productId;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
}
【问题讨论】: