使用 Ajax 提交时,表单未在控制器中执行操作

Form not hitting action in controller when submitted with Ajax

我已经查看了有关如何编写代码的其他相关帖子,但我仍然无法使其正常工作

我正在尝试使用 Ajax 提交表单,但是当单击按钮时,控制器中的操作从未被触发。

$('#sendCodeForm').submit(function (e) {
            var form = $('sendCodeForm')[0]; 
            var formData = new FormData(form);                
            if ($(this).valid()) {
                e.preventDefault();
                $.ajax({
                    url: '@Url.Action("SendResetCode", "Home")',
                    type: 'post',
                    cache: false,
                    processData: false,
                    contentType: false,
                    data: formdata,
                    success: function (data) {
                        if (data.status == "success") {
                            $("#successMessage").append('Reset code has been sent to');
                        }
                    }
                });
            }
        });

<form id="sendCodeForm">
    <label for="email">EMAIL ADDRESS</label>
    <input asp-for="username" id="username" type="email" placeholder="your@email.com" /><br>
    <button type="submit" id="sendCodeBtn">Send Code</button>
</form>

我最初使用 Ajax 标签助手创建表单,如下所示,但由于现在能够停止表单,所以不得不改为在 javascript 中使用 Ajax重定向

<form asp-controller="" asp-action="" method="post" data-ajax="true" data- 
ajax-method="post" data-ajax-complete="completed">

您可以尝试如下更改代码:

            $('#sendCodeForm').submit( function (e) {
                e.preventDefault();
                var formData = new FormData($('#sendCodeForm')[0]);              
                    $.ajax({
                        url: '@Url.Action("SendResetCode", "Home")',
                        type: 'post',
                        cache: false,
                        processData: false,
                        contentType: false,
                        data: formData,
                        success: function (data) {
                            if (data.status == "success") {
                                $("#successMessage").append('Reset code has been sent to');
                            }
                        }
                    });               
            });

结果: