JavaScript跳过AJAX Post

时间:2016-02-01 20:15:26

标签: javascript c# jquery ajax asp.net-mvc

我有一个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);
}

1 个答案:

答案 0 :(得分:2)

删除

[ValidateAntiForgeryToken]

这种机制用于某些安全措施,如果你想使用它,请阅读它

基本上你必须将令牌发送给控制器,否则它会发出错误,因为安全措施失败了 - 没有给出令牌 -

你可以添加这个

@Html.AntiForgeryToken()

然后将其作为表单提交,MVC将自动处理此问题并为您验证令牌

修改: 缺少控制器操作的一个参数也可能导致500,在您的情况下,ID和指示符都应该发送,确保您的html正在正确检索值

通常我会通过制作静态值来开始跟踪错误