我无法用ajax运行我的控制器

时间:2017-07-22 14:45:49

标签: jquery ajax asp.net-mvc

这是我的控制者:

public ActionResult AddToCart(int id, int quantity)
    {
        ShoppingCart sc = new ShoppingCart();
        sc.id = id;
        sc.Quantity = quantity;

        if (ModelState.IsValid)
        { 
           db.ShoppingCart.Add(sc);
           db.SaveChanges();
           return RedirectToAction("Index", "Products");
         }
       return View("Index");
    }

这是我的观点:

$(".add-to-cart").click(function () { 

        var dataObject = JSON.parseInt({
            'id': item.id,
            'quantity': item.quantity
        });

            $.ajax(
            {
                type: "POST",  
                url: "ShoppingCarts/AddToCart",   
                contentType: "application/html; charset=utf-8",
                data: dataObject,
                dataType: "html",
                success: successFunc,
                error: errorFunc
            });

            function successFunc(data, status) {
                alert('success');
            }

            function errorFunc() {
                alert('error');
            }
    });

在ajax中有成功和错误功能,但它们都不起作用。我究竟做错了什么?我无法弄明白你能帮我吗?谢谢

1 个答案:

答案 0 :(得分:1)

我们在这里没有完整的上下文,但这是你必须要做的才能使它工作,它经过测试(不仅仅是我的头脑猜测):

1。)将您的数据类型更改为' json'和contentType到' application / json'

2.。)JSON.parseInt是什么?将其更改为JSON.stringify

3。)而不是id和数量,使用这些属性制作复杂的模型(类):

public class MyData{
   int quantity;
   int id;
}

并按照以下方式更改您的控制器:

   public ActionResult AddToCart(MyData myData)

它可以工作,但你也可以在这样的简单属性上尝试[HttpPost]属性: public HttpResponseMessage Post([FromBody]字符串名称){...}

但请注意,在您的情况下,这不会执行此操作,因为[HttpPost]只允许一个action属性。

4。)item变量似乎在这里未定义。定义它:)

  var item={
  quantity:5,
  id:4
 }