【问题标题】:Wait for a promise before launching the postback in ASP.net在 ASP.net 中启动回发之前等待一个承诺
【发布时间】:2021-09-08 00:05:37
【问题描述】:

我正在尝试在我的 asp.net 网络表单页面上实现 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" />

返回代码:

 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

【问题讨论】:

    标签: javascript asp.net vb.net webforms recaptcha-v3


    【解决方案1】:

    我是这样解决的:

    __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>
    

    【讨论】:

      猜你喜欢
      • 2019-03-31
      • 1970-01-01
      • 2020-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多