简体   繁体   English

使用 ASP.NET 6.0 MVC 应用程序中的 jQuery AJAX 将数据插入数据库

[英]Insert data into database using jQuery AJAX in ASP.NET 6.0 MVC Application

I made the user input part of my project as a modal (pop-up), so I need to transfer the data to the back side (controller) without refreshing the page.我将我的项目的用户输入部分作为模式(弹出),所以我需要将数据传输到后端(控制器)而不刷新页面。 For this reason, I chose to use ajax, but I have a problem.由于这个原因,我选择使用ajax,但是我有一个问题。

Here my Register Controller.这是我的寄存器 Controller。

[HttpPost]
    public JsonResult Register(RegisterViewModel formData)
    {
        var user = new UserRegisterDto
        {
            FirstName = formData.FirstName,
            LastName = formData.LastName,
            Email = formData.Email,
            Password = formData.Password,
            PhoneNumber = formData.PhoneNumber,
            UserType = Data.Enums.UserTypeEnum.user
        };

        var response = _userService.AddUser(user);
        return new JsonResult("Data is Saved");
    }

Here my ajax code这是我的 ajax 代码

$('#btnRegister').click(function() { debugger
        var user = {
            FirstName:  $('#inputUserFirstName').val(),
            LastName: $('#inputUserLastName').val(),
            Email: $('#inputUserEmail').val(),
            Password: $('#inputUserPassword').val(),
            PasswordConfirm: $('#inputUserPasswordConfirm').val(),
            PhoneNumber: $('#inputUserPhoneNumber').val()
        };

        $.ajax({
            type: 'Post',
            url: '/Auth/Register',
            data: JSON.stringify(user),
            contentType:'application/json; charset=utf-8;',
            dataType: 'json',
            success: function() {       
                alert("saved");
            },
            error: function() {
                alert("no saved");
            }
        });

When I debugged, I saw that the formData parameter in the controller was not getting any data.调试的时候看到controller里面的formData参数没有得到任何数据。

I couldn't find where I made the mistake.我找不到我犯错的地方。

You will need to JSON.stringify() your data to transfer it in the request.您将需要JSON.stringify()您的数据以在请求中传输它。

Your request should look like this:您的请求应如下所示:

$.ajax({
        type: 'Post',
        url: '/Auth/Register',
        data: JSON.stringify(user),
        contentType:'application/json; charset=utf-8;',
        dataType: 'json',
        success: function() {       
            alert("saved");
        },
        error: function() {
            alert("no saved");
        }
    });

For the controller i would do it likes this:对于 controller 我会这样做:

[Route("Auth/Register")]
[HttpPost]
    public IActionResult Register([FromBody] RegisterViewModel formData)
    {
        var user = new UserRegisterDto
        {
            FirstName = formData.FirstName,
            LastName = formData.LastName,
            Email = formData.Email,
            Password = formData.Password,
            PhoneNumber = formData.PhoneNumber,
            UserType = Data.Enums.UserTypeEnum.user
        };

        var response = _userService.AddUser(user);
        return Json(new { @Success = true});
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM