我有一个JavaScript功能,可以通过点击按钮触发,但Chrome开发者工具会跳过AJAX帖子。发生500错误,但控制器内的断点永远不会被击中,因此没有任何变量似乎正在传递。我在这个网站上看过很多JavaScript问题,但找不到解决这个问题的问题。这是我的代码的样子,并提前感谢!
JavaScript的:
$("#calculate").click(function () {
var $indicator = $("#Indicator");
$.ajax({
type: "POST", //THIS IS NEVER HIT, JUST SKIPPED OVER!
url: '@Url.Action("LogPrices", "Sales")',
data: {
indicator: $indicator.val(), iD: $("#ID").val()
},
success: function (data) {
// logic
}
});
});
控制器:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LogPrices(bool indicator, long iD)
{
// logic
return Json(priceLog, JsonRequestBehavior.AllowGet);
}
答案 0 :(得分:2)
删除
[ValidateAntiForgeryToken]
这种机制用于某些安全措施,如果你想使用它,请阅读它
基本上你必须将令牌发送给控制器,否则它会发出错误,因为安全措施失败了 - 没有给出令牌 -
你可以添加这个
@Html.AntiForgeryToken()
然后将其作为表单提交,MVC将自动处理此问题并为您验证令牌
修改强>: 缺少控制器操作的一个参数也可能导致500,在您的情况下,ID和指示符都应该发送,确保您的html正在正确检索值
通常我会通过制作静态值来开始跟踪错误