无法在JQuery Ajax返回上刷新reCaptcha

问题描述 投票:5回答:6

我在让Ajax在JQuery AJAX回调上自动刷新时花了很多时间。我有一个注释框,其中包含要刷新的消息,并在reCaptcha验证后立即发布。如果有人希望立即添加另一个注释,reCaptcha可以自动刷新,那将是很好的选择。这是我的返回函数:

 $.post(url, formData, function(data) {
        if (returnString.match(/^Error:/)) {
          $("#interactionResults").html(data).show().fadeOut(6000);
        }
        else if (postNumber == 0) {
          $('#newCommentDisplay').html(returnString).show();
          $.post("http://www.google.com/recaptcha/api", "Recaptcha:reload()");   
        }

当我使用时:

$.post("http://www.google.com/recaptcha/api", "Recaptcha:reload()"); 

我收到一个错误:

XMLHttpRequest cannot load http://www.google.com/recaptcha/api. Origin http://localhost:8888 is not allowed by Access-Control-Allow-Origin. 

足够,所以我尝试用这一行来改变这一行:

$('#recaptcha_reload_btn').trigger('click'); 

仍然没有任何反应。有人知道发生了什么吗?

javascript jquery ajax cors recaptcha
6个回答
6
投票

在我的html中,我有:

<div class="g-recaptcha" id='recaptcha' data-sitekey="xxxxxxxxxx"></div>

我使用grecaptcha.reset();

示例:如果(typeof $('#recaptcha')!=“未定义”){grecaptcha.reset();}


3
投票

使用

jQuery("#recaptcha_reload").click(); 

“#recaptcha_reload”,即图像本身,是触发器。 #recaptcha_reload_btn将不起作用,因为a标签不是触发器。


2
投票
Recaptcha.reload();

(Recaptcha已加载)


0
投票

如果您使用的是新的Recaptcha 2.0,请使用以下命令:后面的代码:

ScriptManager.RegisterStartupScript(this, this.GetType(), "CaptchaReload", "$.getScript(\"https://www.google.com/recaptcha/api.js\", function () {});", true);

对于简单的javascript

<script>$.getScript(\"https://www.google.com/recaptcha/api.js\", function () {});</script>

-1
投票

您尚未将点击处理程序绑定到您的元素。从jQuery文档:

。trigger(eventType [,extraParameters])

说明:执行所有附加到给定事件类型的匹配元素。

如果在调用触发器之前尚未将处理程序附加到元素,则没有要执行的单击处理程序。

编辑:

[编写$('#recaptcha_reload_btn').bind('click');时,您实际上设置了一个单击处理程序,但是没有执行任何操作。您必须告诉clickhandler怎么办:

$('#recaptcha_reload_btn').bind('click',function() {
    alert('you just clicked me');
};

如果未设置回调处理程序,则只会注册该事件,但不会触发任何操作。将此与问题Reload an iframe with jQuery的解决方案结合起来,您应该使自己的Recaptcha可以执行您想要的操作:

$('#recaptcha_reload_btn').bind('click',function() {
    var iframe = document.getElementById('#recaptcha'); //use your own selector here!
    iframe.src = iframe.src;
};

-1
投票
$( "#recaptcha_reload_btn" ).click();
© www.soinside.com 2019 - 2024. All rights reserved.