session problem help

The part I am working on is one of the modules of a web application powered by Yii 1.4.x .I have a CGridView in my index view file. Then inside it,I have custom buttons. One of the buttons is popping up a dialog box. here’s the snippet for that custom button that i mentioned




                'see' => array(

                     'label' => 'View',

                     'url' => 'Yii::app()->controller->createUrl("myControllerName/view",array("id" => "$data->id"))',


                     'options' => array(

                         'ajax' => array(

                            'type' => 'POST',

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

                             'dataType' => "json",

                             'async' => false,

                             'success' => 'function(data){

                                    $("#detail-dialog").dialog("open"); return false;

                                }',

                             'update' => '#detail'

                         )

                     )

                ),



Here is the snippet of the controller action that named ‘view’ in the controller




    public function actionView(){


        $gid = $_GET['id'];


        $data = array();

        if(Yii::app()->request->isAjaxRequest) {

            $model = MyModelName::model()->findById($gid);

            if (!empty($model) || !is_null($model)) {

                $attributes = $model->getAttributes();

                $result = MyModelName::model()->findByKey($attributes['key'], $attributes['new_key']);

                if(!empty($result)){

                    foreach($result as $key => $val){

                        $data['model'][$key] = $val;

                    }

                    $data['code'] = self::CODE_AJAX_SUCCESS;

                  }

            } else {

                $data['code'] = self::CODE_AJAX_ERROR;

            }

           $_SESSION['ajaxresponse'] = json_encode($data);

           echo json_encode($data);

           exit;

        }



at the bottom of the CGridView of my view file, I have this snippet of the CJuiDialog




$this->beginWidget('zii.widgets.jui.CJuiDialog', array(

    'id' => 'detail-dialog',

    'options' => array(

        'title' => 'Edit Data',

        'autoOpen' => false,

        'modal' => false,

        'width' => 600,

        'height' => 500,

        'close' => 'js:function(){

            //nothing here

        }'

    ),

)); ?>


$result = $_SESSION['ajaxresponse'];

$this->renderPartial('_view',array('viewajaxresponse' => $result));

$this->endWidget('zii.widgets.jui.CJuiDialog');



Whenever I click a row in the CGridView, It pops out the CJuiDialog box, along with the ajax response inside it

because I rendered partial it from the session.

Now the issue is, let’s say I closed the CJuiDialog box then I clicked the 2nd row or another row in the CGridView, the contents of the Dialog box remains with the first row that I clicked unless I force refresh the browser like two or three times before the data inside the Dialog box changes .How to solve this problem?

I even implemented an ajax function of the ‘close’ event of the CJuiDialog box in order to kill the session




            $.ajax({

                    url: "'.Yii::app()->controller->createUrl("MyControllerName/destroysession", array("s"=>"ajaxresponse")).'",

                    type: "POST",

                    dataType: "json",

                    async: true,

                    success: function(data){

                       document.location.reload(true);

                }

            });



and then in the controller action





    public function actionDestroysession(){

        $name = !empty($_GET['s'])?$_GET['s']:'';

        if(isset($name)){

            unset($_SESSION[$name]);

            $data['code'] = self::CODE_AJAX_SUCCESS;

            echo json_encode($data);

            exit;

        }

        echo $data['code'] = self::CODE_AJAX_ERROR;

        exit;


    }



the problem this time, is , it totally kills the session even if you see in the function, I only killed a specific session variable because I passed the name, but then when I click any of the rows in CGridView, no data displays in side the CJuiDialog box … so how to solve this session problem ? I need help badly :unsure: