Yii select2 - 无法选择返回的数据

时间:2013-04-14 20:19:48

标签: yii jsonp jquery-select2

我一直在研究select2和yii,并设法通过json请求/响应加载数据。

我遇到的问题是当我尝试选择返回数据的条目时,我不能。

我哪里错了?操作返回的数据是json格式为CustomerCode和Name

窗体小部件代码

$this->widget('bootstrap.widgets.TbSelect2', array(  
    'asDropDownList' => false,  
    'name' => 'CustomerCode',  
    'options' => array(     
        'placeholder' => 'Type a Customer Code',  
                'minimumInputLength' => '2',  
        'width' => '40%',  
                'ajax' => array(  
                                //'url'=> 'http://api.rottentomatoes.com/api/public/v1.0/movies.json',  
                                'url'=> Yii::app()->getBaseUrl(true).'/customer/SearchCustomer',  
                            'dataType' => 'jsonp',  
                            'data' => 'js: function (term,page) {  
                                        return {  
                                        term: term, // Add all the query string elements here seperated by ,  
                                        page_limit: 10,  
                                               };  
                                                             }',        
                            'results' => 'js: function (data,page) {return {results: data};}',  
                            ),  
            'formatResult'    => 'js:function(data){  
                                var markup = data.CustomerCode + " - ";  
                                markup += data.Name;  
                                return markup;  
                            }',
            'formatSelection' => 'js: function(data) {  
                                return data.CustomerCode;  
                            }',  

    )));  

从控制器操作SearchCustomer剪切的代码

Yii::app()->clientScript->scriptMap['jquery.js'] = false;
$this->renderJSON(Customer::model()->searchByCustomer($term));

来自基本控制器类的renderJSON函数

   protected function renderJSON($data)
   {
       header('Content-type: application/json');
       echo $_GET['callback'] . "(";
       echo CJSON::encode($data);
       echo ")";


       foreach (Yii::app()->log->routes as $route) {
           if($route instanceof CWebLogRoute) {
               $route->enabled = false; // disable any weblogroutes
           }
       }
       Yii::app()->end();
   }

感谢您对此的任何帮助

1 个答案:

答案 0 :(得分:0)

我试试。

变化  'dataType' => 'jsonp' to 'dataType' => 'json'

并检查json格式

https://github.com/ivaynberg/select2/issues/920