这是我的控制者:
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中有成功和错误功能,但它们都不起作用。我究竟做错了什么?我无法弄明白你能帮我吗?谢谢
答案 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
}