【问题标题】:RecaptchaState not defined when using ajax and codeigniter form validation使用 ajax 和 codeigniter 表单验证时未定义 RecaptchaState
【发布时间】:2011-08-06 14:57:01
【问题描述】:

我正在尝试使用 codeigniter 验证提交我的第一个 ajax 表单。这是一个带有 Recaptcha 的简单评论字段。在添加之前,我确保表单在没有 ajax 的情况下验证并正常工作。

我为表单提交的 ajax 处理创建了一个新方法。它本质上是非 ajax 方法中代码的精确副本,除非出现提交错误,它将表单视图(有错误)加载到变量中,对其进行 json_encode 并通过 ajax 将其发送回。一切看起来都正常工作。它发回的表单包含应有的验证错误,但是当我将表单加载到元素中时,我得到一个 RecaptchaState not defined 错误。然后它会重定向到一个空白页面。

这是我的方法:

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 给我一个错误,但工作正常。提前感谢您的帮助!

【问题讨论】:

    标签: jquery ajax forms codeigniter recaptcha


    【解决方案1】:

    似乎有许多问题可能导致问题(Need help with reCAPTCHA - keep getting incorrect-captcha-solreCaptcha Issues with Ajax 等),但我在网上找到的解决方案都与我无关。我最终弄清楚了我的代码出了什么问题,希望它也能对你有所帮助。

    我是这样在 jQuery 中编写查询字符串的:

    "&amp;recaptcha_response_field="
    

    但需要这样做:

    "&recaptcha_response_field="
    

    显然,并不总是需要转义与号。

    【讨论】:

      猜你喜欢
      • 2015-06-24
      • 2012-02-27
      • 1970-01-01
      • 2016-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多