首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在ASP.net中启动回发之前,请等待承诺

在ASP.net中启动回发之前,请等待承诺
EN

Stack Overflow用户
提问于 2021-06-24 21:25:55
回答 1查看 42关注 0票数 0

我正在尝试在我的asp.net webforms页面上实现v3 recaptcha。

主要的问题是,我认为grecaptcha.ready是异步的,因为页面会立即回发,而不是等待客户端事件完成。

如何让回发等待grecaptcha.ready和grecaptcha.execute?

前端代码:

代码语言:javascript
运行
复制
 <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:

代码语言:javascript
运行
复制
 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
EN

Stack Overflow用户

发布于 2021-06-24 22:10:30

我是这样解决的:

代码语言:javascript
运行
复制
__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>
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68116692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档