0

次のコードを使用して、Ext.data.store の Yii コントローラー アクションからデータを取得します。

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 デベロッパー ツールの出力:
ここに画像の説明を入力

4

1 に答える 1

1

返された json は無効です。そのはず:

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

(ルートを囲む引用符vehicles)。

于 2012-08-23T00:27:27.317 に答える