使用Yii框架自带的CActiveForm实现ajax提交表单

6 篇文章 0 订阅
注意: 启用enableAjaxValidation => true 貌似自定义url 不起作用!

Php代码: 
  1. <div class="form">  
    <?php $form=$this->beginWidget('CActiveForm', array(  
        'id'=>'login-form',  
        'enableAjaxValidation'=>true,  
        'enableClientValidation'=>true,  
         'clientOptions' => array(  
                            'validateOnSubmit' => true,  
                            'afterValidate'=>'js:function(form,data,hasError){  
                            if(!hasError){  
                                    $.ajax({  
                                            "type":"POST",  
                                            "url":"login",  
                                            "data":$("#login-form").serialize(),  
                                            "success":function(data){$("#searchResults").html(data);},  
                                              
                                            });  
                                    }  
                            }'  
                        ),  
          
    )); ?>  
      
        <p class="note">Fields with <span class="required">*</span> are required.</p>  
      
        <div class="row">  
            <?php echo $form->labelEx($model,'username'); ?>  
            <?php echo $form->textField($model,'username'); ?>  
            <?php echo $form->error($model,'username'); ?>  
        </div>  
      
        <div class="row">  
            <?php echo $form->labelEx($model,'password'); ?>  
            <?php echo $form->passwordField($model,'password'); ?>  
            <?php echo $form->error($model,'password'); ?>  
            <p class="hint">  
                Hint: You may login with <tt>demo/demo</tt>.  
            </p>  
        </div>  
      
        <div class="row rememberMe">  
            <?php echo $form->checkBox($model,'rememberMe'); ?>  
            <?php echo $form->label($model,'rememberMe'); ?>  
            <?php echo $form->error($model,'rememberMe'); ?>  
        </div>  
      
        <div class="row submit">  
            <?php echo CHtml::SubmitButton('Login');?>  
        </div>  
        <div id="searchResults"></div>  
      
    <?php $this->endWidget(); ?>  
    </div><!-- form -->  


看这段代码是yii框架自动生成form表单中的代码,enableAjaxValidation 是否开启ajax验证,enableClientValidation是否开启客户端验证,clientOptions是客户端验证选项,开启客户端验证就是像用户名格式、密码格式之类的前端js正则验证就可以了,但是像用户名需要进行唯一性验证的时候,单纯的客户端验证不能实现了,这时候就需要ajax异步验证相配合,所以两个都需要开启,clientOptions中定义了客户端验证是在什么时候进行,我设定的是提交前(submit之前),afterValidate中定义了验证通过之后需要进行的js操作,就是提交表单数据到后台,没什么难点,只是可能有些方法不知道,问百度。

Yii中还有一个ajax提交的button,

Php代码:  
<?php echo CHTML::ajaxSubmitButton($label, $url)?>


如果你使用这个按钮,那么你就无法使用表单自带的rule规则验证,即使实现了,也相当麻烦,干脆别用这个,这个按钮适应不需要验证的表单

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值