Yii:在控制器动作中渲染模型的Json

时间:2013-07-09 10:07:28

标签: jquery yii

我是Yii的新手并且有一个问题:我正在从Jquery Mobile应用程序向Yii WorkerController的actionJSON()函数发送一个ajax POST请求(带有firstname和lastname参数)。此函数(操作)使用提交的firstname和lastname POST值的列值检索worker模型。所以这里是代码 - 问题到底是我的onSuccess和onError方法都没有在jquery中调用。

JQuery Mobile -

$(document).ready(function() {
        $("#submit").click(function(){

            var formData = $("#callAjaxForm").serialize();

            $.ajax({
                type: "POST",
                url: "localhost/myYiiVodovod1/index.php?r=site/json",
                //crossDomain: true,
                cache: false,
                data: formData,
        //dataType   : 'json',
                success: onSuccess,
                error: onError
            });

            return false;
        });
    });  

Yii workerController - 我不确定findByAttribute()是否正确:

public function actionJson(){

          if((isset($_POST['firstName']) && isset($_POST['lastName']))){

            header('Content-type: application/json');  

            $model=$this->loadModelTwo($_POST['firstName'],$_POST['lastName']);

            echo CJSON::encode($model);  

        }
            Yii::app()->end();  

    }

public function loadModelTwo($fname,$lname){

        $model = Worker::model()->findByAttributes(array('first_name' => $fname, 'last_name' => $lname));

        if($model===null){
        throw new CHttpException(404,'The requested page does not exist.');
        }              

        return $model;

    }

感谢。

1 个答案:

答案 0 :(得分:0)

我认为你的问题很简单,除非你有错字。您说actionJson位于workerContoller,但您的ajax调用是localhost/myYiiVodovod1/index.php?r=site/json,因此除非您使用特殊的URL映射,否则它应该点击siteController。很可能你只需要在你的ajax电话上更正你的网址。

同样在处理ajax调用时,安装Firebug或其他插件总是很好,这样你就可以看到ajax调用和响应。