Cjuiautocomplete E Source Javascript

Vorrei applicare una situazione del genere: la source di cjuiautocomplete proviene da una funzione ajax che tramite una interrogazione ad una action del controller riceve un oggetto json.

Tramite l’esempio che c’è scritto qui funziona, invece se lo scorporo no. Penso sia un problema del codice javascript che ho scritto.




$this->widget('zii.widgets.jui.CJuiAutoComplete',array(

              		'name'=>'nomi',

              		'id'=>'nomi',

              		'source'=>'js: autoCompletamento()',

              		// additional javascript options for the autocomplete plugin

              		'options'=>array(

              				'minLength'=>'1',

              		),

              		'htmlOptions'=>array(

              				'style'=>'height:20px;',

              		),

              ));






function autoCompletamento(){

        	/*d=new Array("a","Aa");

            return d;*/


            $.ajax({

                url: '<?php echo Yii::app()->createUrl('inventario/getNomi'); ?>',

                dataType: "json",

                data: {

                    name: $("#nomi").val()

                },

                success: function (data) {

                	data = JSON.parse(data);

                    found = [];

                    $.each(data, function (i, group) {

                        	var str=group.COGNOME+' '+group.NOME;

                                found.push(group.COGNOME+' '+group.NOME);


            });                    

        }



la tua funzione non ha argomenti come nel caso di:




'source'=>'js: function(request, response)



prova ad adeguarla.

Ma perchè non puoi scriverla come nell’esempio?

Per una migliore leggibilità del codice e per l’assist-code.

Hai ragione, risolto cosi:




'source'=>'js: function(request,response){getNomi(request,response)}',






function getNomi(request, response) {

		    $.ajax({

		        url: <?php Yii::app()->createUrl('inventario/getNomi'); ?>,

		        dataType: "json",

		        data: {

		            name: request.term

		        },

		        success: function (data) {

		                                found = [];

		                                $.each(data, function (i, group) {

		                                        found.push(group.COGNOME+" "+group.NOME);

		                            });

		              		

		              		response(found);

		        }

		    })

		 }