CGridView ajax возвращаемое значение

У меня есть вот такой CGridView




          array( 

            'class'=>'CButtonColumn',

            'htmlOptions'=>array('width'=>'100', 'style'=>'vertical-align: middle; text-aline: left'),

            'buttons'=>array(

                'activate'=>array(

                    'label'=>'Activate',

                    'imageUrl'=>'/images/activate_g.png',

                    'url'=>'Yii::app()->createUrl("user/ChangeStatus", array("id"=>$data->id, "action"=>"activate", "product_id"=>returnProductId($data->type, $data->version)))',

                    'click'=>'function() {

                        $.fn.yiiGridView.update("flash_updated",{ 

                            type:"POST",

                            url:$(this).attr("href"),

                            success:function(data) {

                                $.fn.yiiGridView.update("flash_updated");

                            },

                            error:function() {

                            }

                        });

                        return false;

                    }',

                    'visible'=>'($data->status == 2 || $data->status == 3) ? true : false',

                    

                ),

        ),

        )



а в контроллере такая функция




    public function actionChangeStatus($id, $action, $product_id)

    {

        $res = false;

        if(Yii::app()->request->isPostRequest)

        {

            // we only allow deletion via POST request

            if(!$model = Flash::model()->findByPk($id)) {

                throw new CHttpException(404, 'No flash found.');

            }

            

            ($action == 'activate') ? $model->status = 1 : $model->status = 2;

            

            if ($model->save()) {

                $user_products = UserHasProduct::model()->findByAttributes(array('user_id'=>Yii::app()->user->id, 'product_id'=>$product_id));

                ($action == 'activate') ? $user_products->active = 1 : $user_products->active = 0;

                if($user_products->save()) {

                    $res_user_product = true;

                }

                $res = true;

            }

            

            if(!isset($_GET['ajax']))

                $this->redirect(array('index'));

                

        }

        else

            throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');

    }



Все работает нормально, статус меняется, но я хочу передать дополнительную переменную ($testvar) назад в ajax функцию и получить к ней доступ через data.testvar




success:function(data) {                                

alert(data.testvar)

$.fn.yiiGridView.update("flash_updated");

},



Как я могу это сделать?

Спасибо!




if(!isset($_GET['ajax']))

    $this->redirect(array('index'));

else

    echo CJSON::encode(array('testvar'=>'testvalue'));



И, вероятно, в параметрах ajax запроса потребуется указать dataType: "json".

P.S. Интересно вы как-то делаете собственные кнопки… У меня выходило гораздо проще (просто выдержка из кода):




'recount'=>array(

    'label'=>'Recount',

    'url'=>'url("/cart/order/recount", array("id"=>$data->order_id))',

    'imageUrl'=>url().'/images/recount.png',

    'options'=>array(

        'confirm'=>"Are you sure?",

        'ajax'=>array(

            'type'=>'POST',

            'url'=>"js:$(this).attr('href')",

            'success'=>'js:function(){$.fn.yiiGridView.update("order-grid");}',

        ),

    ),

),