javascript - MVC 从控制器获取数据以使用 AJAX 查看有什么问题?
问题描述
我正在尝试从控制器获取数据以查看并使用 ajax 接收它,这是我的操作:
public JsonResult addtocart(int id)
{
var Product = db.Product.SingleOrDefault(c => c.id == id);
var Cart = new Cart();
ProductCart pc = new ProductCart()
{
Product = Product,
Cart = Cart
};
pc.Cart.added_at = DateTime.Now;
pc.Cart.product_id = pc.Product.id;
db.Cart.Add(pc.Cart);
db.SaveChanges();
return Json(pc.Product, JsonRequestBehavior.AllowGet);
}
当我为其中一个产品按下“添加到购物车”按钮并且我想将其添加到包含一个表的模式时,它的类是“myjxT”,这是我的 ajax:
$('.addtocart').click(function () {
var name = $(".item-name").text();
var price = $(".item-price").text();
$.ajax({
method :'GET',
url: "/Product/addtocart",
dataType: JSON,
cache: false,
data: { "Name": name, "Price": price },
success: function (data) {
var content = "";
for (var x in data) {
content = "<tr><td>" + data[x].Name + "</td><td>" + data[x].Price + "</td></tr>"
}
$(".myjxT").html(content);
},
error: function (msg) {
alert("something wrong");
}
});
});
但是当我单击“添加到购物车”时它什么也不做,它会将我引导到这个 url:“Product/addtocart/35”,其中 35 是产品 ID,并且页面包含产品的 json 对象:
{"Category":{"id":11,"name":"kikii","number_of_products":3},"id":35,"name":"Samsung Galaxy M31","price":8000,"image":"Samsung Galaxy M31.jpg","description":"t is a long established ","CategoryId":11}
这是foreach循环内的“添加到购物车”按钮:
@Html.ActionLink("Add to cart", "addtocart", new { id = item.id }, new { @class = "btn btn-danger addtocart", @style = "width:90px;background-color:rgb(60, 60, 60)" })
解决方案
您收到 AJAX 错误的原因是您的控制器方法中的参数与您在 AJAX 调用中的参数不匹配。
public JsonResult addtocart(int id)
data: { "Name": name, "Price": price },
您需要在 AJAX 调用中传递产品 ID。
例如
data: { "id": productid },
推荐阅读
- javascript - 如何正确地将 js 库添加到 laravel 项目中
- java - 检查谓词泛型的类型
- javascript - 如何在javascript中从父类触发子实例的事件?
- pyspark - 如何更新pyspark中的列值?
- maven - Maven "also-make" 的行为
- python - 如何在 tkinter 的同一个变量中绑定一个又一个函数?
- dbt - 如何修复“无法解析”的 sqlfluff lint 错误
- android - Android 11(仅限)FragmentManager 崩溃 - FragmentManager 已被销毁
- sqlite - 使用 Jetbrains 的 Datagrip 时如何保存 sqlite 数据库
- javascript - Tone.js 完全停止所有播放声音