1

我一直在研究 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();
   }

感谢对此的任何帮助

4

1 回答 1

0

我试试。

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

并检查 json 格式

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

于 2013-06-20T09:12:53.533 回答