Asp.net mvc 输入失败后,如何保持屏幕上的reCaptcha

Asp.net mvc 输入失败后,如何保持屏幕上的reCaptcha,asp.net-mvc,recaptcha,Asp.net Mvc,Recaptcha,我有一个asp.NETMVC站点,它有一个引导模式,上面有一个reCaptcha表单。它在提交时正确验证输入,但如果无效,则在呈现视图以便重试时,验证码消失,javascript控制台显示此错误:“未能对“文档”执行“写入”:除非显式打开,否则无法从异步加载的外部脚本写入文档。”我必须刷新页面并重新打开模式才能再次看到验证码 包含验证码的代码片段(公钥/私钥位于web.config中): Jquery对SubmitRequest的Ajax调用。。。我认为我加载局部视图的方式可能是罪魁祸首

我有一个asp.NETMVC站点,它有一个引导模式,上面有一个reCaptcha表单。它在提交时正确验证输入,但如果无效,则在呈现视图以便重试时,验证码消失,javascript控制台显示此错误:“未能对“文档”执行“写入”:除非显式打开,否则无法从异步加载的外部脚本写入文档。”我必须刷新页面并重新打开模式才能再次看到验证码

包含验证码的代码片段(公钥/私钥位于web.config中):

Jquery对SubmitRequest的Ajax调用。。。我认为我加载局部视图的方式可能是罪魁祸首

       if ($('#request-form').valid()) {
                $.ajax({
                    url: "/SubmitRequest",
                    type: "POST",
                    data: $("#request-form").serialize(),
                    success: function (data) {
                        //show the confirmation (thanks) modal
                        $("#request-modal .modal-content").html(data);
                    },                       
                    error: function (XMLHttpRequest, textStatus, errorThrown) {                          
                        window.location.href = '@Url.Action("Error")';
                    }
                });
            }
更新:我将它改为使用recaptcha_ajax.js,因为我是在ajax请求后加载它的。现在,我从recaptcha_ajax.js文件中得到了这个错误:“无法将属性'innerhtml'设置为null”(无法判断它是在哪个对象上抛出这个错误)。现在,我不再在razor文件中调用Html.Recaptcha,而是使用以下内容:

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

尝试并放置javascript引用

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

在您的主布局中,我遇到了与您相同的错误,因为javascript库没有完全加载

您还应该检查回调中是否存在div

我希望这有帮助,
Salvador

我最终删除了所有这些代码,因为它最终不被需要。因此,考虑到这一点,再加上我发帖以来的时间长度,我无法轻松尝试这一点(尽管我当时确实添加了recaptcha_ajax.js库,但可能不在正确的位置?)。我不确定是否正确的方案是删除帖子还是什么我Kelly,np我想我们可以离开它也许它会帮助其他人?
<script type="text/javascript" src="http://www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script>
<div id="recaptcha1"></div>
$.ajax({
                    url: "/SubmitRequest",
                    type: "POST",                       
                    data: $("#request-form").serialize(),
                    success: function (data) {
                        //show the confirmation (thanks) modal 
                        $("#request-modal .modal-content").html(data);

                        Recaptcha.create("6LedL_sSAAAAAJuozIfRiVfNOCHs-jlTn6NM4c-T",
                            "recaptcha1",
                            {
                                theme: "white",
                                callback: Recaptcha.focus_response_field
                            }
                          );

                        console.log("done loading html");
                        console.log('captcha control: ' + $("#recaptcha1").length);

                    },                       
                    error: function (XMLHttpRequest, textStatus, errorThrown) {                          
                        window.location.href = '@Url.Action("Error")';
                    }
                });
    <script type="text/javascript" src="http://www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script>