我正在try 实现一个产品信息窗口,其中有一个负责显示库存产品数量的部分视图.库存产品的数量由一个单独的链接表"ProductCount"表示.我需要在不重新加载视图的情况下添加产品数量,并且只重新加载部分视图.为此,我决定使用jQuery AJAX.解题方法是基于这个答案的material :"link".但我遇到了未知的问题:首先,我很难从输入字段中获取值,其次,当我try 执行函数时,出现一条未知的消息 脚本代码:
<script type="text/javascript">
function addQuantityClicked() {
var Url = '@Url.Action("QuantityAdd", "Home")';
$.ajax({
url: Url,
type: 'POST',
data: { idProduct: @Model.Product.Id, quantity: alert($("#qnt").val) }
})
}
</script>
@using vp_server.Models.ViewModels
@model vp_server.Models.ViewModels.ProductViewsTransactions
<!DOCTYPE html>
<html>
<body>
<label>The quantity at the moment: @Model.Count</label>
<form>
<label>Entrance:</label>
<input type="number" id="qnt" name="quantity" />
<input type="button" onclick="addQuantityClicked()" id="changeButton" value="Add" />
</form>
</body>
</html>
<script src="~/js/jquery.unobtrusive-ajax.min.js"></script>
<script src="~/js/jquery-3.5.1.min.js"></script>
我也try 使用document.getElementById("qnt").value
,但是.value
不是由代码编辑器定义的
Strange message when trying to execute the script个 控制器方法的代码:
[HttpPost]
public async Task<IActionResult> QuantityAdd(int idProduct, int quantity)
{
using (VapeshopContext db = new VapeshopContext())
{
ProductCount? productCount = db.ProductCounts.Where(pc => pc.ProductId == idProduct).FirstOrDefault();
if (productCount != null)
{
productCount.Count += quantity;
}
await db.SaveChangesAsync();
return PartialView();
}
}
我删除了alert ,虽然现在消息没有出现,但方法也没有react
我部分更改了JS代码,删除了.ajax以测试脚本,并在.alert
中留下了一条测试消息.消息是输出的,但如果返回.ajax
,则不会发生任何事情,甚至消息也会输出到.alert
新的JS代码:
<script type="text/javascript">
$(function () {
$("#btnPost").click(function () {
alert("Test")
$.ajax({
type: "POST",
url = "/Home/QuantityAdd",
data: { "idProduct": @Model.Product.Id, "quantity": $("#qnt").val() }
})
})
})
</script>
<script src="~/js/jquery.unobtrusive-ajax.min.js"></script>
<script src="~/js/jquery-3.5.1.min.js"></script>