Javascript 用JSON填充ExtJS组合框

Javascript 用JSON填充ExtJS组合框,javascript,extjs,combobox,extjs3,Javascript,Extjs,Combobox,Extjs3,我使用的是ExtJS(3),只是尝试使用JSON查询的数据库中的记录填充一个组合框/下拉列表 以下是我的JSON调用: var projectDropDown = new Ext.data.Store({ autoLoad: true, url: 'dropdown.json', storeId: 'projectDropDown', idProperty: 'ProjectID', fields: [ 'ProjectID', 'ProjectName'

我使用的是ExtJS(3),只是尝试使用JSON查询的数据库中的记录填充一个组合框/下拉列表

以下是我的JSON调用:

var projectDropDown = new Ext.data.Store({
    autoLoad: true,
    url: 'dropdown.json',
    storeId: 'projectDropDown',
    idProperty: 'ProjectID',
    fields: [ 'ProjectID', 'ProjectName' ]
});
然后是我的组合框代码:

{
    xtype: 'combo',
    id: 'ProjectName',
    fieldLabel: 'Project Name',
    valueField: 'ProjectID',
    displayField: 'ProjectName',
    store: projectDropDown,
    typeAhead: true,
    mode: 'local',
    triggerAction: 'all',
    emptyText:'Select a Project...',
    selectOnFocus:true
}
JSON会像这样返回我的数据:

[
   {
      "ProjectID":"1",
      "ProjectName":"Mike's Test Project"
   },
   {
      "ProjectID":"2",
      "ProjectName":"My Second Test Project"
   },
   {
      "ProjectID":"3",
      "ProjectName":"My Third Project"
   },
   {
      "ProjectID":"6",
      "ProjectName":"More testing from me"
   }
]
我想我已经很接近了,我只是不知道我错过了什么来建立联系


感谢您的帮助。

我要做的第一步是将存储(或存储大小或其他内容)输出到控制台,以查看数据是否正确加载到存储中

我猜您需要将返回到某个根对象中的JSON封装起来。尝试使用指定的
root
元素为您的商店指定一个名称,如下所示:

var projectDropDown = new Ext.data.Store({
    autoLoad: true,
    url: 'dropdown.json',
    storeId: 'projectDropDown',
    reader: new Ext.data.JsonReader(
    {
        root: 'projects'
    }),
    idProperty: 'ProjectID',
    fields: [ 'ProjectID', 'ProjectName' ]
});
然后将返回的JSON改为如下所示

{
    "projects" : [
       {"ProjectID":"1","ProjectName":"Mike's Test Project"},
       {"ProjectID":"2","ProjectName":"My Second Test Project"},
       ....
    ]
}

如何更改返回的JSON?我不知道该怎么做,也不知道那是什么called@Mike或者事实上,现在我看到它只是从一个JSON文件中提取?只需像文本文档一样编辑它,我就能够更改返回JSON的代码,因此现在它看起来就像您列出的那样:{“projects”:[[{“ProjectID”:“1”,“ProjectName”:“Mike的测试项目”},{“ProjectID”:“2”,“ProjectName”:“我的第二个测试项目”},{“ProjectID”:“3”,“ProjectName”:“我的第三个项目”},{“ProjectID”:“6”,“ProjectName”:“来自我的更多测试”}]}但是当我添加以下行时:reader:new Ext.data.JsonReader({root:'projects'},我得到一个错误,Firebug告诉我“missing”)在参数列表之后,“我想我的存储的创建方式可能有问题-在Firebug中,'projectDropDown'变量中没有数据项….?好的,我发现了问题并解决了,是在查询数据库的代码中,我使用了另一个文件中的一段代码进行测试,它起了作用,所以我一直在比较g这两个,它现在正在流行,至少它是有效的-谢谢你的帮助