RecaptchaState не определено при использовании проверки формы ajax и codeigniter - PullRequest
0 голосов
/ 06 августа 2011

Я пытаюсь отправить свою первую форму AJAX с проверкой кода.Это простое поле для комментариев с речепта.Я убедился, что форма проверяется и работает правильно без AJAX, прежде чем добавить его.

Я создал новый метод обработки 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, но нормально работает нормально.Заранее спасибо за любую помощь!

1 Ответ

0 голосов
/ 31 декабря 2011

Кажется, есть ряд проблем, которые могут вызвать проблему ( Нужна помощь с reCAPTCHA - продолжайте получать некорректные-captcha-sol , reCaptcha Проблемы с Ajax и т. Д.), Нони одно из решений, которые я нашел в Интернете, не относилось ко мне.В конце концов я выяснил, что не так с моим кодом, надеюсь, он вам тоже поможет.

Я составлял строку запроса в jQuery так:

"&amp;recaptcha_response_field="

, но мне нужно было это сделатьвот так:

"&recaptcha_response_field="

Очевидно, что не всегда необходимо выходить из амперсанда.

...