Recuperare Valori Ajax

Salve ho un form con una sola dropdownlist:




<?php  


    $form=$this->beginWidget('CActiveForm', array(

	'action'=>Yii::app()->createUrl(''),

	'method'=>'GET',

	'enableClientValidation'=>true,

	

	)); 

?>

	<div class="row">

		<?php echo $form->labelEx($model,' Seleziona un numero'); ?>

		<?php echo $form->dropDownList($model,'modulo',array(

            														 

            														 '1'=>'1',

            														 '2'=>'2',

                                                                     '3'=>'3',

                                                                     '4'=>'4',

                                                                     '5'=>'5',

                                                                     '6'=>'6',

                                                                    

																	 ));  ?>

				

	</div>

</div>





<?php $this->endWidget(); ?>




Prima domanda , l’action essendo inutile posso eliminarla?

In base al numero selezionato dovrei fare un renderpartial (diverso in base alla selezione)

questo la parte con il pulsante :




<div id="data">

		   

		</div>

		 

		<?php echo CHtml::ajaxButton ("Cambia Modulo",

		                              CController::createUrl('site/updateAjax'), 

		                              array('update' => '#data'));

		?>



Come riesco a prendere nel controller site/updateAjax il valore della select ?

a che action ti riferisci che vuoi eliminare?

Comunque per fare quello che vuoi tu devi caricare un evento ajax sulla select in questo modo, non serve avere il bottone accanto… puoi farlo automaticamente:

Questo nella view:




<?php echo $form->dropDownList($model,'modulo',array(1,2,3,4,5,6),

array(

   'ajax' => array(

   'type'=>'POST', //request type

   'url'=>CController::createUrl('tuoController/restituisciview'), //url da dove caricare la view a secondo del parametro.

   'update'=>'#data', //div da aggiornare

   'data' => array('modulo_id' => 'js:this.value'), //invio come modulo_id il valore selezionato

));  ?>

<div id="data"></div>                                



Questo nel tuo controller:




public function actionRestituisciview()

{

$modulo_id = $_POST['modulo_id'];

if($modulo_id!=''){

 return $this->renderPartial('view/_modulo', array('id'=>$modulo_id), true,true)));

}

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

}



è solo un esempio, comunque il codice da utilizzare è simile a questo devi solo un pò rielaborare.

Se invece lo vuoi fare col bottone sposta l’evento ajax della dropdown sul bottone e cambia il valore che invi dentro data con quello recuperato dalla select.

Funziona scusa il ritardo , ora dovevo invece inviare dei dati prelevati da un div

usando ajax normalmente

farei :





$(document).ready(function() {

  $("#bottone").click(function(){

    var num1 = $("#num1").val();

    var num2 = $("#num2").val();

    $.ajax({

      type: "POST",

      url: "paginadiricezione.php",

      data: "numero1=" + num1 + "&numero2=" + num2,

      dataType: "html",

      success: function(msg)

      {

        $("#risultato").html(msg);

      },

      error: function()

      {

        alert("Chiamata fallita!!!");

      }

    });

  });

});

</script>




Poi nella pagina paginadiricezione.php avrei in $_POST[‘numero1’] il valore num1 $_POST[‘numero2’] num 2 ,

come lo faccio con yii?

puoi creare un bottone e poi aggiungere l’evento ajax come per la select, a quel punto non usi update ma i vari eventi ajax che ti servono tipo click e success,

oppure crei un bottone e poi registri la funzione js con yii con riferita all’id del bottone e la usi così com’è.

Oppure puoi usarla così com’è nel tuo codice.

Per usarla come nel mio codice al posto di paginadiricezione.php devo mettere:

<?php echo Yii::app()->baseUrl."/controller/action"?>