2

私はrecaptchaを実装しようとしています。jquery(ajax)を使用して検証スクリプト(http://www.google.com/recaptcha/api/verify)を呼び出しています。これにより、データ型がJSONPに制限され、Googleは他のすべてのデータ型を拒否します。

問題は、グーグルが次のような文字列を返すことを確認することです:真の成功

またはfalse'エラーメッセージ'

これにより、jquery側で解析エラーが発生します...解析エラーが発生した場合でも、このシナリオまたは最悪のシナリオで応答テキストを取得する方法を誰かが知っていますか?

以下は私のajaxリクエストです。テスト用に完全関数とエラー関数を追加しました。

$("#verifyCaptcha").click(function(){
    var chal = Recaptcha.get_challenge();
    var resp =  Recaptcha.get_response();                   
    $.ajax({
        url: "http://www.google.com/recaptcha/api/verify",  
        type: "GET",
        data: {
            privatekey: "MyKey",
            remoteip:  "172.29.129.133", 
            challenge:  chal,
            response: resp                          
        },
        //dataType: 'jsonp',
        success: function(output){  
            output = output.split('/n');
            console.log(output[0] + '**' + output[1]);
            if(output[0].toLowerCase() == 'true')
                $("#recaptcha_result").html('Succes: form will be sent.');
            else
                $("#recaptcha_result").html('Failed: form will NOT be sent.');
        },
        complete:function (xhr, status) {
            if (status === 'error' || !xhr.responseText) 
                console.log('an error occured');
            else 
                var data = xhr.responseText;
        },
        error: function(request, status, error)
        {
         if(request.responseText == 'success')
          $("#recaptcha_result").html('Succes: form will be sent.');
         else
          $("#recaptcha_result").html('Failed: form will NOT be sent.');       
          console.log(request.responseText + '**'+status + "**"+error);       
        }
    });                     

});
4

1 に答える 1

4

リクエストの種類が原因で、AJAXとクロスドメインリクエストは無効だと思います。

詳細については、こちらを確認してください。

jQueryを使用したRECATPCHAの検証

于 2012-07-28T20:00:20.283 に答える