在 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,这就是问题所在!
有问题的表格是一个带有 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,这就是问题所在!