2011-08-06 9 views
0

codeigniterの検証で初めてのAjaxフォームの送信を試みています。 Recaptchaを使った簡単なコメントフィールドです。フォームを追加する前に、フォームが有効であり、正しく機能していることを確認しました。ajaxとcodeigniterフォームの検証を使用しているときにRecaptchaStateが定義されていません

フォーム提出のajax処理のための新しいメソッドを作成しました。本質的に、非ajaxメソッドのコードの正確なコピーです。サブミッションエラーがある場合、フォームビュー(エラーあり)を変数にロードし、json_encodesに返し、ajax経由で返信します。すべてが正しく動作するように見えます。それが返すフォームには妥当性チェックエラーが含まれていますが、フォームに要素をロードすると、RecaptchaState定義されていないエラーが発生します。その後、空のページにリダイレクトされます。ここで

は私の方法である:

function submit_review() 
{ 
    $this->load->library('form_validation'); 
    $this->load->library('recaptcha'); 
    $this->lang->load('recaptcha'); 

    $rules = array(
         array(
          'field' => 'review', 
          'label' => 'Review', 
          'rules' => 'trim|required|xss_clean|strip_tags' 
          ), 
         array(
          'field' => 'recaptcha_response_field', 
          'label' => 'lang:recaptcha_field_name', 
          'rules' => 'required|check_captcha' 
          ) 
        ); 
    $this->form_validation->set_rules($rules); 
    $this->form_validation->set_error_delimiters('<div class="error">', '</div>'); 

    if ($this->form_validation->run() == FALSE) 
    { 
     // set the view variables 
     $form_data['recaptcha'] = $this->recaptcha->get_html(); 
     $form_data['id'] = $this->input->post('id'); 
     $response['form'] = $this->load->view('dynamic/post_review_form', $form_data, TRUE); 
    } 
    else 
    { 
     // all validation tests passed 
    } 
    echo json_encode($response); 
} 

そして、これは私のjqueryのコードです:

 $("#review_submit").click(
      function(event){ 
       event.preventDefault(); 
       var str = $("form").serialize(); 

      $.ajax({ 
       type: "POST", 
       url: "<?= base_url() ?>ajax/submit_review", 
       dataType: "json", 
       data: str, 
       cache: false, 
       success: 
        function(data){ 
         $("#post_review_wrapper").html(data.form); 
        } 
      }); 
     }); 

私はreCAPTCHAのが私にAJAXを使用して、エラーを与えますが、正常に動作している理由として完全に困惑しています通常は。助けをあらかじめありがとう!

答えて

0

問題を引き起こす可能性のある問題(Need help with reCAPTCHA - keep getting incorrect-captcha-solreCaptcha Issues with Ajaxなど)があるようですが、ウェブ上で見つけた解決策のどれも私には関係しませんでした。私は最終的に私のコードに何が間違っているかを理解しました。うまくいけば、それもあなたを助けるでしょう。

私はこのようにjQueryでクエリ文字列を構成した

"&amp;recaptcha_response_field=" 

が、このようにそれをやってする必要:

"&recaptcha_response_field=" 

どうやらアンパサンドをエスケープすることは必ずしも必要ではありません。

関連する問題