Java Google reCaptcha没有';引导调用远程模式时无法加载

Java Google reCaptcha没有';引导调用远程模式时无法加载,java,javascript,jquery,twitter-bootstrap,recaptcha,Java,Javascript,Jquery,Twitter Bootstrap,Recaptcha,我在第一页中定义了如下内容: <span class="btn btn-default"> <a data-toggle="modal" id="fillTheFormHiddenInput" data-target="#login-modal" href="login-i">sign in</a> </span> 在第一页的末尾: <div class="modal fade" id="login-modal" tab

我在第一页中定义了如下内容:

<span class="btn btn-default"> <a data-toggle="modal"
        id="fillTheFormHiddenInput" data-target="#login-modal" href="login-i">sign in</a>
</span>

在第一页的末尾:

<div class="modal fade" id="login-modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
</div>

这是我的第二页:(…/login-i)


&时代;
登录到仪表板


签名 在里面
实际上,我用这种方式调用远程模式。但当我单击登录按钮时,不会加载reCaptcha,这将显示:

重新加载页面以获取以下内容的源:

我还注意到,在加载脚本时,状态代码为302:

有什么问题???(让您知道,如果我在没有模式的情况下加载页面login-I,则会显示reCaptcha)


这是这个项目的简化版本,你可以看看


我对引导模式也有类似的问题

您是否尝试过将模式代码直接添加到登录页面中,而不是从远程位置调用它

我使用了一个jsp标记,我将它导入到login.jsp中,由于一些未知的原因,它导致任何js停止工作,我仍然不知道为什么,但是将模式代码拉到页面中对我来说就停止了这个问题


希望对您有所帮助。

问题在于,recaptcha代码使用
document.write()
方法运行。当您调用ajax时,由于
ajax
,您不能使用该方法。例如,在模式中,
dataremote
在内部使用ajax

如果您在chrome中运行代码,您可以看到下面的警告

Failed to execute 'write' on 'Document': It isn't possible to write into a document from an asynchronously-loaded external script unless it is explicitly opened.
Google提供您可以先在
index.jsp
中添加脚本

<script type="text/javascript" src="http://www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script>


create(“您的API密钥”//使用您的API密钥更新
“雷帕查”,
{
主题:“红色”,
回调:Recaptcha.focus\u response\u字段
}
);
就这些。ReCaptcha将显示在模式上


仅供参考,您需要验证表格。将很有帮助。

为了完成Edward令人敬畏的回答,如果您使用远程内容的modals或任何复杂的异步行为,我保证在创建Recaptcha之前已加载外部脚本

$.getScript("https://www.google.com/recaptcha/api/js/recaptcha_ajax.js",function(){
  if(typeof Recaptcha != "undefined"){            
     Recaptcha.create("YOUR_API_KEY",  "recaptchaDiv", {
       theme: "red",
       callback: Recaptcha.focus_response_field
     });
  }
  else {
     alert("recaptcha not loaded");
  } 
});

我面临这个问题,因为recaptcha需要远程脚本。因此,显示和验证recaptcha需要internet连接。听起来很愚蠢,但别忘了在您的classpath@maxx777一切都准备好了。如果你仔细阅读这个问题,我已经提到“但是如果我在没有模式的情况下加载页面login-I,reCaptcha就会显示出来”这意味着这个问题只存在于Modal…我以前尝试过你的解决方案,是的,它奏效了,但我不想这样,因为我想在登录页面加载时创建一个Spring模型对象,因为我的主页在一天中有很多点击次数,并且每次都会创建一个登录模型对象,这对我来说不是一个好的解决方案。。。无论如何,谢谢这是有道理的,如果你上传你的登录页面代码,我会帮你看一看,看看我是否能解决。thanX Natasha,我用Eclipse为你制作了一个非常简单易懂的版本:当模式按钮按下时,你会看到,recaptcha不会出现,但如果你直接进入/登录页面,它确实会出现。谢谢你,Mehdi,我今天会为你看一看。你应该得到100分以上。。。非常感谢爱德华,谢谢你,伙计(y)
<%
  ReCaptcha c = ReCaptchaFactory.newReCaptcha("YOUR_API_KEY", "YOUR_TOKEN", false);
  out.print(c.createRecaptchaHtml(null, null));
%>
<div id="recaptcha"></div>
<script>
  Recaptcha.create("YOUR_API_KEY",   // update with your api key
    "recaptcha",
    {
      theme: "red",
      callback: Recaptcha.focus_response_field
    }
  );
</script>
$.getScript("https://www.google.com/recaptcha/api/js/recaptcha_ajax.js",function(){
  if(typeof Recaptcha != "undefined"){            
     Recaptcha.create("YOUR_API_KEY",  "recaptchaDiv", {
       theme: "red",
       callback: Recaptcha.focus_response_field
     });
  }
  else {
     alert("recaptcha not loaded");
  } 
});