我正在尝试在我的asp.net webforms页面上实现v3 recaptcha。
主要的问题是,我认为grecaptcha.ready是异步的,因为页面会立即回发,而不是等待客户端事件完成。
如何让回发等待grecaptcha.ready和grecaptcha.execute?
前端代码:
<script src="https://www.google.com/recaptcha/api.js?render=key"></script>
<script>
function onbtnRegistrazioneClick(e) {
return grecaptcha.ready(function () {
grecaptcha.execute('key', { action: 'submit' }).then(function (token) {
console.log(token);
document.getElementById("gRecaptchaResponse").value = token;
});
});
}
</script>
<asp:Button runat="server" ID="btnRegistrazioneCliente" CssClass="btnGenerico" Text='<%$ Resources:btnRegistratiText%>' ValidationGroup="NewUtente" CausesValidation="true" OnClientClick="onbtnRegistrazioneClick(event);"></asp:Button>
<input type="hidden" value="" id="gRecaptchaResponse" name="gRecaptchaResponse" />
Back Code:
Public Sub btnRegistrazioneCliente_Click(sender As Object, e As System.EventArgs) Handles btnRegistrazioneCliente.Click 'btnRegistrazioneCliente.ServerClick '
If Me.IsValid Then
Dim gRecaptchaResponse As String = Request.Form("gRecaptchaResponse")
Dim isCaptchaValid As Boolean = Globals.Security.ReCaptchaV3.Validate(gRecaptchaResponse)
'...
else
'...
end if
End Sub
发布于 2021-06-24 22:10:30
我是这样解决的:
__doPostBack('<%=btnRegistrazioneCliente.UniqueID%>', 'OnClick');
<script>
function onbtnRegistrazioneClick(e) {
return grecaptcha.ready(function () {
grecaptcha.execute('6Ld2D1MbAAAAAMwnZ4iN1p1G9K7YQWdQW84nNQjv', { action: 'submit' }).then(function (token) {
document.getElementById("gRecaptchaResponse").value = token;
__doPostBack('<%=btnRegistrazioneCliente.UniqueID%>', 'OnClick');
});
});
}
</script>
https://stackoverflow.com/questions/68116692
复制相似问题