Click en cgridview para actualizar un div por ajax

Hola,

Estoy ya que no puedo más, no consigo que me presente el contenido de respuesta de una llamada, supuestamente ajax, en el div que le digo y sí me presenta la vista y nada más, solo el html generado.

La llamada es buzonusuario/mensaje y la salida es


public function actionMensaje(){

                $mensaje = BuzonUsuario::model()->findByPk($_GET['idM']);

                $this->renderPartial('view', array('model'=>$mensaje),false, true);


}



He hecho varias pruebas, pero la última, copiada de otro post es con un botón en la CGridView.




array(

        'class'=>'CButtonColumn',

        'template' => '{eliminar}',

        'buttons' => array(

                'eliminar' => array(

                        'label'=> 'Eliminar',

                        'url' =>'Yii::app()->controller->createUrl("buzonusuario/mensaje",array("idM"=>$data->idBuzonUsuario,"ajax"=>1))',

                        'click'=>"function() {

                                $.fn.yiiGridView.update('#texto-msg', {

                                        type:'GET',

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

                                        success:function(text) {

                                                $.fn.yiiGridView.update('#texto-msg');

                                                alert(text);

                                        }

                                });

                                return false;

                        }"

                )

        ),




No se cuando es una llamada ajax, ni como hacerlo, ¿me podeis dar una pista?

No entendi bien…

Lo que necesitas es actualizar el grid del cual eliminaste un registro ? – cosa que no pasara porque no regresas un CActiveDataProvider (bueno, es lo que percibo)

O hacer un llamado a buzonusuario/mensaje y que el resultado lo pinte sobre alguna etiqueta ?

Puedes explicar mejor que necesitas


Tip: Para debugear cualquier callback utiliza firebug

Es lo segundo, quiero que al hacer click me actualice con la respuesta un div externo al cgridview.

También he utilizado esta opción y nada, aquí ni siquiera me procesa la llamada




        array(

            'type'=>'raw',

            'value'=>'CHtml::ajaxLink("enlaceajax","/index.php?r=buzonUsuario/mensaje",array(

                            "data"=>array(

                                    "idM"=>$data->idBuzonUsuario,

                            ),

                            "update"=>"#texto-msg",

                        ));',

        ),



Con esta ultima opción lo he conseguido. menos mal.

He visto por ahi que la otra opción no se puede hacer funcionar salvo extendiendo el CButtonController.

Y conseguir lo que quiero, he copiado el script generado por el ajaxlink y todo correcto. gracias por el consejo de firebug

Bien, pues como lo tenias al inicio no andabas tan mal… solo que en el evento click … tenias que utilizar js. ej:

‘click’=>‘js:function(){…}’

y dentro de la funcion el llamado via callback…

De todas formas ya lo resolviste…

Que cerca pero que lejos estaba. :)

Muchas gracias.