Captcha没有模型,也没有ActiveForm

时间:2015-05-22 13:36:12

标签: php yii

如何使用 CCaptcha 而不使用模型(规则)和ActiveForms?

只需创建并检查。例如通过AJAX

1 个答案:

答案 0 :(得分:0)

即使您正在制作模态ajax表单,我建议使用Yii模型。

您只需要绑定onsubmit方法,使用表单数据进行ajax调用,而不是重新加载整个页面。

我可以在此页面上向您展示Ajax表单的这个示例: http://www.eldeposit.com/agencia/1552/oi-real-estate

使用Yii并具有验证码。

在这种情况下,它不是模态,但它是带有验证码的Ajax表单。

jQuery('#contactar_submit_btn').click(function(){
    var submit_label = jQuery('#contactar_submit_btn').attr('value');
    jQuery('#contactar').ajaxSubmit(
      {'dataType': 'json', 'success': function(data) {
        jQuery('#contactar_submit_btn').attr('disabled', false);
        jQuery('#contactar_submit_btn').attr('value', submit_label);
        var timestamp = Number(new Date());
        var csrc = jQuery('#contactarCCaptcha').attr('src');
        jQuery('.captcha_image').attr('src',csrc+'?t='+timestamp);
        if (data.error.length > 0)
          alert(data.error);
        else {
          jQuery('#contactar_target').html(data.success);
          jQuery('#contactar').resetForm();
          jQuery('#contactar_target').show();
        }
      },
      'beforeSubmit': function() {
        jQuery('#contactar_target').hide();
        jQuery('#contactar_submit_btn').attr('value','enviando..');
        jQuery('#contactar_submit_btn').attr('disabled', true);
      }});
  });

使验证码正常工作的“技巧”是使用原始URL中的随机参数对图像进行刷新。这是必需的,因为如果我们保留相同的图像但发送ajax请求,则如果用户点击多次提交,验证码将不匹配。

我经常使用的另一种方法是: 1.在我通过ajax加载的控制器中创建完整的Yii表单,并在带有ID的模态中显示 2.单击提交时,对同一个控制器进行ajax调用,并用ajax响应完全替换模态ID内容

希望它能帮到你!