我在窗口小部件中使用了Ajax驗證。這裏是代碼。Yii Ajax窗口小部件驗證無效
的Widget功能
public function run(){
if(!Yii::app()->user->isGuest){
$this->controller->redirect('/');
}
$model= new LoginForm;
// if it is ajax validation request
if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
if(isset($_POST['LoginForm']))
{
$model->attributes=$_POST['LoginForm'];
// validate user input and redirect to the previous page if valid
// blah blah.......
小工具中查看:
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'login-form',
'enableAjaxValidation'=> true,
'enableClientValidation'=>true,
'clientOptions'=>array(
'validateOnSubmit'=>true,
),
)); ?>
<div class="row">
<?php echo $form->textField($model,'username',array('placeholder'=>'email','class'=>'form-control')); ?>
<?php echo $form->error($model,'username'); ?>
</div>
<div class="row">
<?php echo $form->passwordField($model,'password',array('placeholder'=>'password','class'=>'form-control')); ?>
<?php echo $form->error($model,'password'); ?>
</div>
<div class="row buttons">
<?php echo CHtml::submitButton('Login', array('class'=>'btn btn-primary btn-block')); ?>
</div>
...
- 現在形式不提交。我點擊登錄後沒有任何反應。
- 如果我使enableAjaxValidation fale,表單工作,但不是AJAX。
- 如果我使enableClientValidation爲false,表單工作但仍然沒有AJAX。
任何想法?謝謝。
感謝您的幫助。但我不認爲上面的代碼有效。我試過var obj = $ .parseJSON(data);但它總是在控制檯中返回無效的標記。 – jackhao
嘗試這樣的:在login.php中,在 'ajaxOptions': .. 'ajaxOptions'=>數組( '成功'=> 「功能(數據){ VAR OBJ = $ .parseJSON(數據); 警報(數據); 如果(obj.login == 「成功」){ ... } 其他{..} – Mundo
是提醒,你可能會看到什麼JSON正在返回 不過,我想你在LoginForm.php模型中遺漏了一些東西 在這裏面,你必須設置errores的例外規則: ... 公共函數的規則() \t { \t \t返回陣列( 陣列( '用戶名', '所需的用戶名。' '需要', '消息'=>), 陣列( '密碼', '需要',「消息'=>'需要密碼'), \t \t); \t} – Mundo