yii中的ajax验证

时间:2015-08-31 14:56:34

标签: php ajax yii

我创建了一个ajax提交按钮来提交表单 表格工作良好,我需要的所有功能都完美无缺 我也启用了Ajax验证和成功消息。  当我部分重定向表单时,会发生此问题。 ajax功能和验证无效。

我的控制器

public function actionCreate()
{
    $model=new Comments;

    // Uncomment the following line if AJAX validation is needed
    $this->performAjaxValidation($model);

    if(isset($_POST['Comments']))
    {
        $model->attributes=$_POST['Comments'];
        // echo '<pre>';print_r($model->attributes);die();
        $valid = $model->validate();

        if($valid){
            if($model->save()){
            echo CJSON::encode(array('status'=>'success'
                ));
        }
        }else{
            $error =CActiveForm::validate($model);
            if($error != '[]')
                echo $error;
            Yii::app()->end();
        }
    }
}

查看/ _Form

    <?php 
$form = $this->beginWidget('CActiveForm',array('id'=>'comments-form',
    'enableAjaxValidation'=>true,
    'action'=>$this->createUrl('Comments/create'),
    'enableClientValidation'=>true
    ));
?>
<div class="errorMessage" id="formResult"></div>
<div id="AjaxLoader" style="display:none" >
<img src="<?php echo Yii::app()->request->baseUrl;?>/theme/images/spinner.gif">
</div>
<div class="row-user-single-user-single" >
        <?php echo $form->labelEx($model,'type'); ?>
        <?php  
         echo $form->dropDownList($model,'type',
         array(""=>"Select Type","0"=>"Offer","1"=>"Events"),
         array('style' => 'width:220px;','class'=>'form-control','disabled'=>false,)); ?>
        <?php echo $form->error($model,'type'); ?>

</div>
<div class="row-user-single-user-single" >
        <?php echo $form->labelEx($model,'offereventid'); ?>
        <?php echo $form->textField($model,'offereventid',array('style' => 'width:500px;','class'=>'form-control','disabled'=>false,)); ?>
        <?php echo $form->error($model,'offereventid'); ?>
</div>
<div class="row-user-single-user-single">
        <?php echo $form->labelEx($model,'name'); ?>
        <?php echo $form->textField($model,'name',array('style' => 'width:500px;','class'=>'form-control','disabled'=>false,)); ?>
        <?php echo $form->error($model,'name'); ?>
</div>
<div class="row-user-single">
        <?php echo $form->labelEx($model,'email'); ?>
        <?php echo $form->textField($model,'email',array('style' => 'width:500px;','class'=>'form-control','disabled'=>false,)); ?>
        <?php echo $form->error($model,'email'); ?>
    </div>

    <div class="row-user-single">
        <?php echo $form->labelEx($model,'comment'); ?>
        <?php echo $form->textArea($model,'comment',array('style' => 'width:500px;','class'=>'form-control','disabled'=>false,)); ?>
        <?php echo $form->error($model,'comment'); ?>
    </div>

    <div class="row-user-single">
        <?php //echo $form->labelEx($model,'createdby'); ?>
        <?php //echo $form->textField($model,'createdby'); ?>
        <?php //echo $form->error($model,'createdby'); ?>
    </div>

    <div class="row-user-single">
        <?php //echo $form->labelEx($model,'createdon'); ?>
        <?php //echo $form->textField($model,'createdon'); ?>
        <?php //echo $form->error($model,'createdon'); ?>
    </div>

    <div class="row-user-single">
        <?php //echo $form->labelEx($model,'status'); ?>
        <?php //echo $form->textField($model,'status',array('size'=>1,'maxlength'=>1)); ?>
        <?php //echo $form->error($model,'status'); ?>
    </div>
    <div class="buttons">
    <?php
        echo CHtml::ajaxSubmitButton('Submit',CHtml::normalizeUrl(array('Comments/create','render'=>true)),
            array(
                'dataType'=>'json',
                'type'=>'post',
                'success'=>'function(data){
                    $("#AjaxLoader").hide();
                    if(data.status == "success"){
                        $("#formResult").html("Comment Submitted");
                        $("#comments-form")[0].reset();
                    }else{
                        $each(data,function(key.val){
                            $("#comments-form #"+key+"_em_").text(val);
                            $("#comments-form #"+key+"_em_").show();
                        });
                    }
                }',
                'beforeSend'=>'function(){
                    $("#AjaxLoader").show();
                }'
                ),array('id'=>'submit','class'=>'btn btn-success'));

    ?>
    <?php $this->endWidget();?>

    </div>

请帮帮我......

1 个答案:

答案 0 :(得分:0)

确保已注册所有必需的脚本(jQuery等)。在JS控制台中调试它。如果您通过renderPartial方法渲染此表单,则可以在此方法中设置$ processOutput = true param。