我在Rails应用程序中有一个Ajax表单,其中包含由Ambethia Recaptcha gem中的助手提供的Recaptcha标记:
recaptcha_tags :ajax => true
在提交时,表单将命中一个create操作,该操作将通过包含以下内容的create.js.erb进行响应:
$('#message-form').replaceWith("<%= escape_javascript(render('message')) %>");
'message'部分包含最初呈现的相同表单标记,包括recaptcha_tags,但此时也可能显示验证中是否有错误。
[在Firefox中,表格将重新呈现并显示刷新的验证码。但是由于某种原因,在Webkit浏览器(Safari和Chrome)中,'dynamic_recaptcha'Recaptcha元素将被清空,好像从未调用Recaptcha.create(public_key,element_id)一样。
在Safari开发者控制台中,我可以调用Recaptcha.create(public_key,element_id)并重新生成验证码。
谁能告诉我这是怎么回事?谢谢。
我有同样的问题,无法使其与Webkit浏览器中的recaptcha_tags一起使用。
最后,我遵循了官方指南,并像这样写(在HAML中....]
在版式标题标签中:
= javascript_include_tag "http://api.recaptcha.net/js/recaptcha_ajax.js"
在已渲染的部分中通过ajax:
#dynamic_recaptcha
:javascript
Recaptcha.create('YOURPLUBLICKEY', document.getElementById('dynamic_recaptcha') , '')
[如果有人遇到这个问题,阿贾克斯(Ajax):真正的诀窍就是我。我正在使用Rails 3.2.13和Recaptcha 0.3.5
=recaptcha_tags(display: {theme: 'clean'}, ajax: true)
我用以下方法解决:
将运行时不会由ajax加载的脚本放在头部:
<script type="text/javascript" src="http://api.recaptcha.net/js/recaptcha_ajax.js"></script>
可选主题:
<script type="text/javascript">var RecaptchaOptions = {"theme":"clean"};</script>
然后在true处使用evalScripts选项调用Ajax.Updater:
new Ajax.Updater('example_div', '/example', { parameters: {text: $F('example_text')}, evalScripts: 'true'});
在html文件中。