Javascript ComboStore未加载数据
我创建了一个组合框,其中包含我给出的配置Javascript ComboStore未加载数据,javascript,extjs,extjs3,Javascript,Extjs,Extjs3,我创建了一个组合框,其中包含我给出的配置 displayField: 'TEXT', valueField: 'ID', 这是我的商店 this.store = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'combodata.json', actionMethods: { read: 'GET' }, reader: new
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中。甚至数据本身也不会存储。谁能帮我解释一下为什么数据没有在combo中加载。
更新:
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'
})
})
});
您的标签表明您使用了ExtJS3.4<代码>根属性在该版本中不可用。改用
root
另外,我不认为extjs3.4已经允许指定一个嵌套的根,比如root:'root.TAG'
,这可能是不可能的,因为您必须更改返回的JSON的格式或升级到更新版本的ExtJs
尝试将此格式与root:'root'
一起使用:
{
"ROOT": [{
"ID": 01,
"TEXT": "ABC"
},
{
"ID": 02,
"TEXT": "DEF"
},
{
"ID": 03,
"TEXT": "GHI"
}]
}
,我正在从JSON文件加载组合
请注意,在Assets
文件夹中有存储加载的JSON文件data.JSON
正如洛伦兹评论的那样,有必要做出一些改变,看看,我希望我能帮助你 您是否已在控制台中检查combo是否通过.getStore()方法加载了store。请在控制台中检查presentStore正在加载哪些值,但
store.data
没有items@David请看一看,谢谢你的回答。我变了,但运气不好。如果我像这样更改我的响应会怎么样?..
在这种情况下,我需要如何继续。您将JSON更改为XML。我从未在ExtJs中使用过XML,因此对此我无能为力。但是我更新了我的答案,指出JSON格式应该可以工作。当然可以。我更新我的代码。。有问题的是仍然没有运气。我再次更改为json,请将其转换为Ext 3I没有ExtJS 3,但如果您知道fiddle.sencha.com之类的地方,您可以在那里开发工具,我可以试试。@AlexandreNeukirchen这篇文章已经有一年左右的历史了,但我希望您的fiddle能够工作,但出于某种原因,它既没有加载数据,也没有显示组合框。