mvc.net 4 ajax使用动作httpGet而不是httpPost

时间:2014-11-11 01:59:44

标签: javascript jquery ajax asp.net-mvc

我有两个方法httpGet和httpPost里面的动作登录。

当ajax调用时,它只能使用Login httpGet。

我希望它使用方法登录httpPost。

...谢谢你的回答!

这是我的代码javascript

$(document).ready(function () {
$(".SignIn").delegate(".btnSignIn", "click", function () {
    var UserName = $("#UserName").val();
    var Password = $("#Password").val();
    $.ajax({
        type: "post",
        url: "/Account/Login",
        data: { UserName: UserName, Password: Password },
    })
    .done(function (message) {
        if (message != null && message != "") {
            alert(message);
        }
        else {
            alert('not working');
        }
    });
    return false;
   });
});

这是使用成员资格的帐户控制器中的两种方法

    //
    // GET: /Account/Login

    [HttpGet]
    [AllowAnonymous]
    public PartialViewResult Login(string returnUrl)
    {
        ViewBag.ReturnUrl = returnUrl;
        return PartialView();
    }

    //
    // POST: /Account/Login

    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public ActionResult Login(LoginModel model, string returnUrl)
    {            
        return Json("aaaa");
    }

1 个答案:

答案 0 :(得分:1)

你的post方法是用[ValidateAntiForgeryToken]属性修饰的,所以它期望在请求中使用,但是你没有在ajax方法中传递它。确保您的表单包含@Html.AntiForgeryToken()并将以下内容添加到ajax数据

__RequestVerificationToken: $('input[name="__RequestVerificationToken"]').val(),