在 grecaptcha.execute() 之后,form.submit 无法处理 ASP.Net MVC 5 表单

After grecaptcha.execute(), form.submit not working on ASP.Net MVC 5 form

有问题的表格是一个带有 reCaptcha v2 的简单表格。单击提交按钮后,Google 使用 reCaptcha 向用户(我)发起挑战。每次 Google 验证我是人时,都会调用 onSubmit,正确序列化表单,但 form.submit() 不会调用服务器上的 ASP.Net MVC 控制器。当 Google reCaptcha 被删除时,控制器被调用得很好所以我认为它与 ASP.Net 代码没有任何关系。

JavaScript 不是我的强项,所以我假设在尝试调用提交时犯了一个愚蠢的错误。我这里有什么问题吗?

    <script>
        var onSubmit = function (token) {
            var form = $("form"); // $("#feedbackForm");
            console.log(form.serialize());
            form.submit();
        }

        var onGrecaptchaError = function (token) {
            grecaptcha.reset();
        }

        var onloadCallback = function() {
            grecaptcha.render('submit', {
                'sitekey' : '@reCaptchaPublic',
                'callback': onSubmit,
                'error-callback': onGrecaptchaError,
                'size': 'invisible'
            });
        };
    </script>

    <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>

和剃须刀形式代码:

@using (Html.BeginForm("Email", "Home", FormMethod.Post, new { id = "feedbackForm" }))
{
    @* [SNIP] *@
    <div class="formfield clear">
        <button id="submit" class="btnSubmit">Send To Leadership</button>
    </div>
}

经过多次搜索,我终于发现您不能为提交按钮指定提交 ID,这就是问题所在!