[Solucionado] Renderpartial mediante Ajax

Buenas Comunidad.

Mi problema es el siguiente, tengo una funcion JS que se ejecuta cuando cambia un campo tipo date en mi vista, y dentro de esta funcion hago un llamado Ajax, donde le envio un parametro al controller (UpdateTable). El controller debe hacer un renderpartial de una vista que contiene una tabla y enviar el parametro que recibio de la funcion js(Este parametro es el que controla cuantas filas generar de la tabla), hasta este punto todo funciona bien, el problema es que no me hace el renderpartial por que debo indicarle donde hacerlo, por ejemplo un div en mi vista (<div id="table"></div>). Pero no se que parametro debo configurar en el Ajax o en el controller para que pueda hacer el renderpartial.

Les dejo el Controller y la Funcion JS.

De antemano Gracias.




$('#fechafinal').change(function(){


	var fechaInicial = jQuery('#fechainicio').val();

	var fechaFinal = jQuery('#fechafinal').val();


	var inicio = Date.parse(fechaInicial);

	var fin = Date.parse(fechaFinal);


	var dif = fin - inicio;

	var diasFalt = ((((dif/60)/60)/24)/1000) + 1;


	$.ajax({

		type: 'POST',

		url: 'UpdateTable',

		data: {'diasFalt': diasFalt},

		success:function(){

			alert("Enviando los dias faltantes.." + diasFalt); 

		},

   		error: function() { // if error occured

   			alert("Error occured.please try again");

         //alert(data);

     	},

     	}

     );

	

})



Esta función lo que hace es cojer los valores de dos datepicker y calcular los dias entre las fechas.




public function actionUpdateTable()

	{

		$model = new Movimiento;


		$cont2 = Yii::app()->request->getParam('diasFalt');

		

		$this->renderPartial('_tabla',array(

			'model'=>$model,

			'cont2' => $cont2,

		)

		);

	}



Este es el Controlador, donde quiero Renderizar la tabla que esta en la vista _tabla.php y le paso el parametro que recibio de la funcion js.

Buenas.

Estás realizando una acción AJAX, por lo que tienes que devolver ese renderPartial.

Puede hacerse de varias formas, y te pongo la siguiente:

Tu controller:




echo $this->renderPartial('_tabla',array(

                        'model'=>$model,

                        'cont2' => $cont2,

                )

                );



Tu vista, donde por ejemplo vas a tener un div llamado "update":




$.ajax({

                type: 'POST',

                url: 'UpdateTable',

                data: {'diasFalt': diasFalt},

                success:function(data){

                        $('#update').html(data); 

                },




Un saludo.

Saludos lagogz.

Muchas gracias por tu respuesta, era justo lo que necesitaba, aunque ya lo estaba realizando con otro método el cual dejo a continuación por si alguien le llega a interesar.




     var action = 'create?r=movimiento/RepresentanteDynamic&id_cliente='+id_cliente;

		

     $.getJSON(action, function(listaJson) {

	// agrego el campo a mi textfield

	$('#Cliente_idcliente').val(listaJson);

			

     });




Esta función Js captura un id, y se lo envía al action RepresentanteDynamic el cual busca ese id en la BD y retorna un dato, el cual es retornado en el objeto JSON "listaJson". (Dejo el action controller).




 public function actionRepresentanteDynamic($id_cliente){

		

		$res = null;

		

		$Cliente = Cliente::model()->findByAttributes(array('idcliente'=>$id_cliente));

		$res = $Cliente->representante;

		header("Content-type: application/json");

		echo CJSON::encode($res);

}



Tambien válido.

Un saludo.