我有一段时间试图让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');
仍然没有发生任何事情。有谁知道发生了什么?
答案 0 :(得分:6)
在我的HTML中我有:
<div class="g-recaptcha" id='recaptcha' data-sitekey="xxxxxxxxxx"></div>
我使用grecaptcha.reset();
例如: if(typeof $(&#39; #recaptcha&#39;)!=&#34; undefined&#34;){ grecaptcha.reset(); }
答案 1 :(得分:3)
使用
jQuery("#recaptcha_reload").click();
“#recaptcha_reload”,图像本身,是触发器。 #recaptcha_reload_btn不起作用,因为a-tag不是触发器。
答案 2 :(得分:2)
Recaptcha.reload();
(Recaptcha已经加载)
答案 3 :(得分: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>
答案 4 :(得分:-1)
您尚未将点击处理程序绑定到您的元素。来自jQuery文档:
.trigger(eventType [,extraParameters])
描述:执行附加到的所有处理程序和行为 给定事件类型的匹配元素。
如果在调用trigger之前没有为元素附加处理程序,则不会执行单击处理程序。
修改强>
当您编写$('#recaptcha_reload_btn').bind('click');
时,您实际上设置了一个单击处理程序,但它不会执行任何操作。你必须告诉clickhandler该做什么:
$('#recaptcha_reload_btn').bind('click',function() {
alert('you just clicked me');
};
如果您没有设置回调处理程序,则事件只是已注册但不会触发任何操作。将此与此问题Reload an iframe with jQuery的解决方案相结合,您应该按照自己的意愿进行重新计算:
$('#recaptcha_reload_btn').bind('click',function() {
var iframe = document.getElementById('#recaptcha'); //use your own selector here!
iframe.src = iframe.src;
};
答案 5 :(得分:-1)
$( "#recaptcha_reload_btn" ).click();