2lenzi 2011-08-14 09:08:18 6996次浏览 6条回复 0 0 0

===AjaxForm.php===

<?php
class AjaxForm extends CFormModel
{
  public $name;
  public $team;
  public function rules()
  {
    return array(array('name', 'required'));
  }
}

===AjaxController.php===

<?php
class AjaxController extends Controller
{
  public function actionIndex()
  {
    $model = new AjaxForm();
    $this->performAjaxValidation($model);
    $this->renderPartial('index', array('model'=> $model));
  }

  protected function performAjaxValidation($model)
  {
    if(isset($_POST['ajax']) && $_POST['ajax']==='user-form')
    {
      echo'发送了ajax请求';
      echo CActiveForm::validate($model);
      Yii::app()->end();
    } else {  echo '没有发送ajax请求'; }
  }
}

===index.php===

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<div>
<?php
$fm = $this->beginWidget('CActiveForm', array('id'=>'user-form', 'enableAjaxValidation'=>true, 'focus'=>array($model,'name'),
));?>
<?php echo $fm->errorSummary($model);?>
<div>
  <?php echo $fm->error($model,'name'); ?>
  <?php echo $fm->labelEx($model, 'name:');?>
  <?php echo  $fm->textField($model, 'name');?>
</div>
<div>
  <?php echo $fm->error($model,'team'); ?>
  <?php echo $fm->labelEx($model, 'team:');?>
  <?php echo  $fm->textField($model, 'team')?>
</div>
<div>
  <?php echo CHtml::submitButton('提交信息');?>
</div>
<?php $this->endWidget() ?>
</div>

请问yii的ajax是焦点离开name表单项的时候发送的么?上面的代码访问为什么没有效果呢?

[attach]305[/attach]

  • 回复于 2011-08-14 13:43 举报

    CHtml标签集成了Jquery功能。那么访问这个标签的页面的html源代码里面应该是可以看到js语句的把。不然怎么发送ajax请求呢? 可是访问后看不到的呀。

  • 回复于 2011-08-14 13:55 举报

    论坛里关于ajax的例子那么多,你自己搜索一下,具体看一下文档!

  • 回复于 2011-08-15 08:08 举报

    问题找到了。controller里renderPartial()参数$processOutput默认是false。这样生成的
    页面没有载入jquery代码。 传true,问题解决。

  • 回复于 2011-08-15 08:22 举报

    楼主真执着啊!

  • 回复于 2011-08-15 12:58 举报

    执着的伢啊!

  • 回复于 2011-09-14 13:34 举报

    放下执着得到解脱~

您需要登录后才可以回复。登录 | 立即注册