5

我有一段时间试图让 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'); 

仍然没有发生任何事情。有谁知道发生了什么?

4

6 回答 6

6

在我的 html 中,我有:

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

我用grecaptcha.reset();

例如: if (typeof $('#recaptcha') != "undefined") { grecaptcha.reset(); }

于 2015-02-24T17:06:07.047 回答
3

利用

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

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

于 2013-06-23T02:16:53.233 回答
2
Recaptcha.reload();

(Recaptcha 已加载)

于 2012-10-13T20:35:51.980 回答
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>
于 2015-04-24T11:22:45.497 回答
-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;
};
于 2012-04-04T00:13:30.287 回答
-1
$( "#recaptcha_reload_btn" ).click();
于 2012-06-19T06:39:14.367 回答