mvc中的ajax和事务出错
我有ajax是:
$( document ).ready(function(){ $('#addtocart').click(function () { var size = $('#ddlsize').val(); var color = $('#ddlcolor').val(); var id ='@Model.ProductId'; alert(size + color +id); $.ajax({ url: '@Url.Action("AddTocart", "ShoppingCart")', data: { id: id, size: size, color: color, }, dataType: "html", type: 'POST', success: function (data) { alert("Da them vao gio hang"); }, error: function () { alert("Co loi xay ra vui long thu lai"); } }); }); });
在我的控制器
[HttpPost] public ActionResult AddTocart(int id, string size, string color) { Product productitem = dbcon.Products.Where(p => p.ProductId == id).SingleOrDefault(); var cart = ShoppingCart.Getcart(this.HttpContext); cart.AddtoCart(productitem, size, color); return View(); }
没有httpget addtocart。当我点击按钮addtocart,ajax中的一些时间错误,但它做动作addtocart并保存在数据库中,一段时间成功和一些时间错误但不保存数据库,我不知道发生了什么问题?
因为这种语法
url: '@Url.Action("AddTocart", "ShoppingCart")'
ajax调用的url
选项是/ShoppingCart/AddTocart
,因为你调用return View();
在您的控制器代码中
[HttpPost] public ActionResult AddTocart(int id, string size, string color) { Product productitem = dbcon.Products.Where(p => p.ProductId == id).SingleOrDefault(); var cart = ShoppingCart.Getcart(this.HttpContext); cart.AddtoCart(productitem, size, color); return View(); }
你告诉控制器在插入数据库之后打开这个URL: /ShoppingCart/AddTocart
,我猜这不会存在,所以你得到错误,因为你没有/Views/ShoppingCart/AddTocart.cshtml
或者你没有在ShoppingCartController
类中没有[HttpPost]
属性的方法。
public ActionResult AddTocart() { }
您应该按如下方式返回json
[HttpPost] public ActionResult AddTocart(int id, string size, string color) { Product productitem = dbcon.Products.Where(p => p.ProductId == id).SingleOrDefault(); var cart = ShoppingCart.Getcart(this.HttpContext); cart.AddtoCart(productitem, size, color); return Json(new { success = true }); }
并将dataType
选项更改为json