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を使用して、エラーを与えますが、正常に動作している理由として完全に困惑しています通常は。助けをあらかじめありがとう!