Я создаю combobox с этими параметрами, которые я дал.
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-адрес идет в ответ, но данные не загружаются в combobox. Даже данные не собираются хранить. Может ли кто-нибудь помочь мне, почему данные не загружаются в комбо. Обновить :
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'
})
})
});
Я сделал эту скрипку, я загружаю комбо из файла JSON.
Обратите внимание, что внутри папки " Assets
" есть файл JSON data.json
, загружаемый хранилищем.
Как заметил Лоренц, необходимо внести некоторые изменения, взглянуть, я надеюсь, что смогу вам помочь!
Теги указывают, что вы используете 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"
}]
}
<ROOT> <I ID="1" TEXT="AB1" /> <I ID="2" TEXT="AB2" /> </ROOT>
В этом случае, как я нужно продолжить.
store.data
не имеет элементов