Yii php ajax未定义变量:模型

时间:2014-02-07 17:04:59

标签: php jquery ajax yii

我仍然在与ajax形式和Yii挣扎。 我得到错误Undefined变量:model。我的表单是另一个视图另一个视图renderPartial本身的renderPartial。

这里的细节

在我的POST控制器中

public function actionViewComment()
    {   
        $post=$this->loadModel();
        $comment=new Comment;
        $this->renderPartial('_viewComment',array(
            'model'=>$post,
            'comment'=>$comment,
        ));

}

_viewcomment.php调用commment / _form.php

<?php $this->renderPartial('/comment/_form',array(
            'model'=>$comment,
        )); ?>

在_form.php中,可以访问变量$ model 有一个按钮在单击时调用jquery函数send()

函数send()      {

   var data=$("#comment-form").serialize();


  $.ajax({
   type: 'POST',
    url: '<?php echo Yii::app()->createAbsoluteUrl("post/Ajax"); ?>',
   data:data,
success:function(data){
                alert("Data Saved"); 
              },
   error: function(data) { // if error occured
         alert("Error occured.please try again");
         alert(data);
    },

  dataType:'html'
  });

}

后置控制器的actionAjax包含

public function actionAjax()
    {
if(isset($_POST['Comment']))
        {
           if($model->validate())
            {
               $model->save();
               return;
            }
        } 
     }

在Ajax的操作中,我得到了错误Undefined variable:model。我不明白为什么?

如果我使用$ model = new Comment;因为$ model为空,所以不保存数据

你能解释一下吗?

添加

$model=new Comment;
$model->attributes = $_POST["Comment"]; 

我发出以下错误

DbCommand failed to execute the SQL statement: SQLSTATE[23000]: Integrity constraint violation: 19 tbl_comment.status may not be NULL. The SQL statement executed was: INSERT INTO 'tbl_comment' ("author", "email", "url", "content", "create_time") VALUES (:yp0, :yp1, :yp2, :yp3, :yp4) (C:\wamp\www\yii\framework\db\CDbCommand.php:358)</p><pre>#0 C:\wamp\www\yii\framework\db\ar\CActiveRecord.php(1077): CDbCommand->execute()

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

actionAjax中,您必须为Comment创建模型对象。您没有创建$ mode,但是您正在调用它们的函数。

public function actionAjax()
    {
        if(isset($_POST['Comment']))
        {
           $model=new Comment;
           $model->attributes = $_POST["Comment"];
           if($model->validate())
            {
               $model->save();
               echo "saved";
            }
            else
            {
               echo "Failed";
            }
        } 
     }