AJAXのサインアップフォームがあるので、エラーが発生した場合(つまり、ユーザー名が既に使用されている場合)にRecaptchaイメージを更新する必要があります。
JavaScriptを使用してリロードするReCaptchaと互換性のあるコードを探しています。
重要:reCAPTCHA APIのバージョン1.0はサポートされなくなりました。バージョン2.0にアップグレードしてください。
grecaptcha.reset();を使用して、キャプチャをリセットできます。
ソース: https://developers.google.com/recaptcha/docs/verify#api-request
ReCaptcha v1を使用している場合(おそらくない):
Recaptcha.reload();
ReCaptcha v2の新しいバージョンの場合:
grecaptcha.reset();
window
に既にロードされたRecaptchaがある場合。
(以下の@SebiHのコメントに基づいて更新されました。)
バージョン1を使用している場合
Recaptcha.reload();
バージョン2を使用している場合
grecaptcha.reset();
または、更新ボタンのクリックをシミュレートすることもできます
// If recaptcha object exists, refresh it
if (typeof Recaptcha != "undefined") {
jQuery('#recaptcha_reload').click();
}
grecaptcha.reset(opt_widget_id)
ReCAPTCHAウィジェットをリセットします。オプションのウィジェットIDを渡すことができます。それ以外の場合、関数は最初に作成されたウィジェットをリセットします。 (GoogleのWebページから)
これを試して
<script type="text/javascript" src="//www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script>
<script type="text/javascript">
function showRecaptcha() {
Recaptcha.create("YOURPUBLICKEY", 'captchadiv', {
theme: 'red',
callback: Recaptcha.focus_response_field
});
}
</script>
<div id="captchadiv"></div>
Show Recaptchaを呼び出すと、captcha divに新しいrecaptchaインスタンスが入力されます。
AngularJSユーザーの場合:
$window.grecaptcha.reset();
reCaptcha v2の新しいバージョンの場合:
grecaptcha.reset();
新しい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>
ReCAPTCHA APIのバージョン1.0を使用している場合は、バージョン2.0へのアップグレード(バージョン1.0はサポートされなくなりました)
grecaptcha.reset();
を使用して、キャプチャをリセットします。