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