2012-08-22 40 views
0

使用我想從Yii的控制器動作數據Ext.data.store與下面的代碼:extjs4 data.store與代理

var vehicles = new Ext.data.Store({ 
     reader: new Ext.data.JsonReader({ 
      fields: ['vehiclename'], 
      root: 'vehicles' 
     }), 
     proxy: new Ext.data.HttpProxy({ 
      url: '<?php echo $this->createUrl('GetVehicles');?>' 
     }), 
     autoLoad: true 
    }); 

或以下的車輛代碼:

var vehicles = Ext.create('Ext.data.Store', { 
     fields: [ 
      {name: 'vehiclename'} 
     ], 
     proxy: { 
      type: 'ajax', 
      url: '<?php echo $this->createUrl('GetVehicles'); ?>', 
      reader: { 
       type: 'json', 
       root:'vehicles' 
      } 
     }, 
     autoLoad: true 
    }); 

我行動代號爲:

public function actionGetVehicles() 
{ 
    $sql = "select vehicleName from vehicletbl inner join companytbl on vehicletbl.companyid=companytbl.companyid and companytbl.companyid='2';"; 
    $vehicles = Yii::app()->db->createCommand($sql)->queryAll(); 
    //var_dump($vehicles); 
    echo '{vehicles:'.json_encode($vehicles).'}'; 
} 

當我請求發送到與瀏覽器地址欄的動作我獲得以下JSON:

{vehicles:[{"vehiclename":"pride"},{"vehiclename":"benz"}]} 

但我不知道爲什麼Ext.data.store無法獲取數據和存儲主題!
我的代碼有什麼問題?
我用儲存在:

items: [treePanel,Ext.create('Ext.grid.PropertyGrid', { 
          title: 'History', 
          closable: false, 
          header: true, 
          sortableColumns: false, 
          customEditors: { 
           Vehicle: Ext.create('Ext.form.ComboBox', {      
            store: vehicles, 
            queryMode: 'local', 
            displayField: 'vehiclename' 

           }) 
          }, 
          /*propertyNames: { 
           'evtStart': 'Start Time' 
          },*/ 
          source: { 
           "Vehicle": 'Select Vehicle', 
           "Select Start Date": false, 
           "Select End Date": true 
          } 
         })] 

Chrome開發者工具輸出:
enter image description here

+0

我在我的ComboBox中使用'displayField:'name''並且沒有顯示數據,我將它改爲'displayField:'vehiclename'',並且每件事情都沒問題! – taher

回答

1

您返回的JSON是無效的。它應該是:

{"vehicles":[{"vehiclename":"pride"},{"vehiclename":"benz"}]} 

(根周圍的vehicles引號)。

+0

我編輯我的行動代碼並使用'echo'{「vehicles」:'。json_encode($ vehicles)。'}';'並且得到你推薦的json,但它不起作用! – taher

+0

嘗試從閱讀器移動「字段」配置到商店(閱讀器沒有'字段'配置,商店呢)。 – Izhaki

+0

當我使用Chrome開發者工具時,我發現var車輛的長度爲0,並且沒有任何數據!我怎樣才能在開發者工具中看到商店可以發送請求到行動或不行? – taher