ComboStore 未加载数据

ComboStore is not loading the data

我用我给出的配置创建了一个组合框。

displayField: 'TEXT',
valueField: 'ID',

这是我的商店

this.store = new Ext.data.Store({
    proxy: new Ext.data.HttpProxy({

        url: 'combodata.json',
        actionMethods: {
            read: 'GET'
        },
        reader: new Ext.data.JsonReader({
            rootProperty: 'ROOT.TAG'
        })
    }),
        fields: [
                    {name: 'ID', mapping: 'ID', type: 'string'},
                    {name: 'TEXT', mapping: 'TEXT', type: 'string'}
                ],
        autoLoad: true
    });

这是我的 JSON

{
    "ROOT": {
        "TAG": [{
            "ID": 01,
            "TEXT": "ABC"
        },
        {
            "ID": 02,
            "TEXT": "DEF"
        },
        {
            "ID": 03,
            "TEXT": "GHI"
        }]
    }
}

我可以看到 URL 正在响应,但数据未加载到组合框中。甚至数据也不会自行存储。任何人都可以帮助我为什么数据没有以组合方式加载。 更新:

this.store = new Ext.data.Store({
            autoLoad: true,
            fields: [
                    {name: 'ID', mapping: 'ID', type: 'string'},
                    {name: 'TEXT', mapping: 'TEXT', type: 'string'}
                ],
            proxy: new Ext.data.HttpProxy({

                url: 'adata.json',//this.url,
                headers: {
                        'Accept': 'application/json; charset=utf-8'
                    },
                actionMethods: {
                    read: 'GET'
                },
                reader: new Ext.data.JsonReader({
                    root: 'ROOT'
                })
            })
        });

你的标签表明你使用的是 ExtJs 3.4。 rootProperty 在该版本中不可用。请改用 root

另外,我不认为 ExtJs 3.4 已经允许指定像 root: 'ROOT.TAG' 这样的嵌套根,这可能是不可能的,您必须更改返回的 JSON 的格式或升级到更新版本的 ExtJs。

尝试将此格式与 root: 'ROOT' 一起使用:

{
    "ROOT": [{
        "ID": 01,
        "TEXT": "ABC"
    },
    {
        "ID": 02,
        "TEXT": "DEF"
    },
    {
        "ID": 03,
        "TEXT": "GHI"
    }]
}

I made this fiddle,我正在从 JSON 文件加载组合。

请注意 Assets 文件夹中有商店加载的 JSON 文件 data.json

正如洛伦兹评论的那样,有必要做一些修改,看看,希望能帮到你!