2012-04-03 5 views
4

JQuery AJAXコールバックで自動的にAjaxをリフレッシュしようとしています。私は、reCaptchaの検証時に即座に投稿されたメッセージが更新されたコメントボックスを持っています。そして、直後に別のコメントを追加したい場合にreCaptchaが自動的に更新できるかどうかは素晴らしいでしょう。ここに私のリターン機能があります:JQuery AjaxでreCaptchaをリフレッシュできませんreturn

$.post(url, formData, function(data) { 
     if (returnString.match(/^Error:/)) { 
      $("#interactionResults").html(data).show().fadeOut(6000); 
     } 
     else if (postNumber == 0) { 
      $('#newCommentDisplay').html(returnString).show(); 
      $.post("http://www.google.com/recaptcha/api", "Recaptcha:reload()"); 
     } 

私が使用:

$.post("http://www.google.com/recaptcha/api", "Recaptcha:reload()"); 

私はエラーを取得する:十分な

XMLHttpRequest cannot load http://www.google.com/recaptcha/api. Origin http://localhost:8888 is not allowed by Access-Control-Allow-Origin. 

はフェアので、私はこの1つでその行を変更してみてください:

$('#recaptcha_reload_btn').trigger('click'); 

まだ何も起こっていませんペンニング。誰が何が起こっているのか分かっていますか?

+0

ああ、「何が起こっていない」で、文字通り何も意味しないか、またはあなたはまだGoogleのエラーの話をしますか? – marue

+0

ええ、私は文字通り何も意味しません。申し訳ありませんが、私はそれを明確にしませんでした。 –

+0

次に、クリックハンドラを表示する必要があります。そこに何か問題があります。 – marue

答えて

-1

要素にクリックハンドラをバインドしていません。 jQueryのドキュメントから:

.trigger(eventType [, extraParameters])

Description: Execute all handlers and behaviors attached to the matched elements for the given event type.

あなたはトリガーを呼び出す前に、あなたの要素にハンドラを接続していない場合は、実行するためには、[いいえ]をクリックハンドラはありません。

編集:

あなたが実際にクリックハンドラを設定$('#recaptcha_reload_btn').bind('click');が、何もしないものを書きます。あなたは何をすべきかというはclickHandlerを伝える必要があり:

$('#recaptcha_reload_btn').bind('click',function() { 
    alert('you just clicked me'); 
}; 

あなたはコールバックハンドラを設定しない場合、イベントがちょうど登録されているが、任意のアクションをトリガしません。この質問Reload an iframe with jQueryからソリューションと組み合わせると、あなたのreCAPTCHAはあなたが望むものをやっている必要があります

$('#recaptcha_reload_btn').bind('click',function() { 
    var iframe = document.getElementById('#recaptcha'); //use your own selector here! 
    iframe.src = iframe.src; 
}; 
+0

$( '#recaptcha_reload_btn')を追加します。 '); ( –

-1
$("#recaptcha_reload_btn").click(); 
+0

)Proximoの答えは正しいです$( "#recaptcha_reload")。クリック(); ' –

2
Recaptcha.reload(); 

(reCAPTCHAのがすでにロードされている)

3

使用

jQuery("#recaptcha_reload").click(); 

"#recaptcha_reload"(画像自体)がトリガーです。 aタグがトリガーではないため、#recaptcha_reload_btnは機能しません。私のhtmlで

+0

+1キャプチャを表示するために使用されるライブラリに関係なく機能するので、 –

6

私が持っている:

<div class="g-recaptcha" id='recaptcha' data-sitekey="xxxxxxxxxx"></div> 

は、私が使用grecaptcha.reset();

例: もし(!typeof演算$( '#のreCAPTCHAの')= "未定義"){ grecaptcha.reset() ; }

+0

+0

回答を更新する場合は、コメントの代わりに回答の詳細を編集してください – Ram

+0

2015年4月(またはそれ以前)の時点で、 Googleは新しいcaptchaを持っていますが、 'grecaptcha.reset();'を使って私を助けてくれた正解です –

0

新しい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>