单击按钮时始终返回Post 400 Error jQuery



我曾尝试使用ajax post保存数据,但一直收到post 400错误。这是我的代码JS-

$(document).on('click', '.btn-Submit', function (e) {
        var user = {};             
            user.FirstName = $('#FirstName').val();
            user.LastName = $('#LastName').val();
            user.Email = $('#Email').val();
            user.MobileNumber = $('#MobileNumber').val();
            user.LoginName = $('#LoginName').val();
            user.PassWord = $('#PassWord').val();
            $.ajax({
                url: '/Users/Create',
                type: 'POST',
                data: { user: user },
                contentType: "application/json; charset=utf-8", // this
                dataType: 'json',
                success: function (resp) {
                    console.log(resp)
                },
                error: function () { }
            }); // ajax asynchronus request 
    });

这是我的控制器

[HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<JsonResult> Create(User user)
    {
        try
        {

            if (ModelState.IsValid)
            {
                user.CreatedDate = DateTime.Now;
                user.CreatedBy = 1;
                user.UpdatedBy = 1;
                user.UpdatedDate = DateTime.Now;
                _context.Add(user);
                await _context.SaveChangesAsync();                    
            }
            else
            {
                var error = ModelState.Values.SelectMany(x => x.Errors);
            }
        }
        catch(Exception ex)
        {
            return Json(new { success = false, message = ex.Message });
        }            
        return Json(new { success = true });
    }

我曾认为这两种方法的语法都是正确的,但每次我调用ajax时,我都会得到400的响应。我做错了什么?

尝试如下更改您的对象,并删除[ValidateAntiForgeryToken],因为您通过ajax请求发布数据,它不会验证ForgeryTaken。

var user = new {             
        FirstName = $('#FirstName').val(),
        LastName = $('#LastName').val(),
        Email = $('#Email').val(),
        MobileNumber = $('#MobileNumber').val(),
        LoginName = $('#LoginName').val(),
        PassWord = $('#PassWord').val()
        };

最新更新