Всегда возвращать Post 400 Error jQuery при нажатии кнопки - PullRequest
0 голосов
/ 06 марта 2020

Я пытаюсь сохранить данные, используя сообщение ajax, но получаю сообщение об ошибке 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 ответ. Что я делаю не так?

1 Ответ

0 голосов
/ 06 марта 2020

Попробуйте изменить объект, как показано ниже, а также удалите [ValidateAntiForgeryToken] , поскольку вы публикуете данные с помощью запроса ajax, и он не проверяет ForgeryToken.

var user = new {             
        FirstName = $('#FirstName').val(),
        LastName = $('#LastName').val(),
        Email = $('#Email').val(),
        MobileNumber = $('#MobileNumber').val(),
        LoginName = $('#LoginName').val(),
        PassWord = $('#PassWord').val()
        };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...