checkbox + ajax + onclick

Amigos,

Mais uma vez peço vossa ajuda.

Preciso criar uma coluna de checkbox(s) dentro de uma CGridview (até ai tudo bem) onde ao clicar na checkbox do item desejado esta já envie o valor da checkbox para uma action via AJAX.

Eu fiz desta forma:




$this->widget('zii.widgets.grid.CGridView', array(

...

'columns'=>array(

    array('name'=>'', 

          'value'=>'CHtml::activeCheckBox($data, "enviar",

          array("ajax"=>array("url"=>Yii::app()->createUrl("pagamarela/ajaxSalvarContato",array("id"=>$data->id)), 

         "complete"=>"ajaxSaveComplete",

         "type"=>"POST")))', 

         'type'=>'raw', 

         'htmlOptions'=>array('width'=>5),),

...



Alguma ideia?

Não funcionou?? deu algum erro?

Nao deu erro pq nao funcionou.

Eu fiz essa modificação:




array(

'name'=>'',

'value'=>'CHtml::ajaxLink("+", Yii::app()->createUrl("pagamarela/ajaxSalvarContato", array("id"=>$data->id, "tipo"=>"add")), array("replace"=>"#teste$data->id",),array("id"=>"teste$data->id"))',

'type'=>'raw',

'htmlOptions'=>array('width'=>5),

),



na action:




 public function actionAjaxSalvarContato($id, $tipo){

            Yii::log($tipo, 'info', 'tipo');

            Yii::log($id, 'info', 'id');

            Yii::log($this->id, 'info', 'this->id');


            if($tipo=="rem"){

              echo CHtml::ajaxLink("+", Yii::app()->createUrl('/pagamarela/ajaxSalvarContato', array('id'=>$id, "tipo"=>"add")), array("update"=>"#teste".$id,),array("id"=>"teste".$id));

            }elseif($tipo=="add"){

              echo CHtml::ajaxLink("-", Yii::app()->createUrl('/pagamarela/ajaxSalvarContato', array('id'=>$id, "tipo"=>"rem")), array("update"=>"#teste".$id,),array("id"=>"teste".$id));

            }

            return true;

        }



Sendo q, ao clicar no sinal de + na primeira vez, ele funciona e loga 2 vezes.

qndo vc tenta reverter a situaçao, o sinal de - nao volta ao normal e ele loga 2 vezes como tipo = add

BI-ZA-RRO!!!

  1. Ele ta submetendo via ajax?

  2. Pelo firebug tu consegue ver a URL submetida?

  3. Está indos os valores por GET?

Já tive esse problema, ao clicar em um item, ele enviar 2x o mesmo dados. Não sei por que acontece isso.

  1. Sim, esta submetendo via ajax.

  2. Não consegui ver pelo debuger do Chrome, mas fiz um log e os valores do primeiro clique estavao OKs.

  3. Passei os valores por router Yii::app()->createUrl("pagamarela/ajaxSalvarContato", … je eram mais q suficientes. Ele só pega a primeira passada