在ExtJS Combobox中读取JSON字符串

时间:2010-12-06 21:35:07

标签: javascript combobox extjs

我正在尝试在ExtJS组合框中读取以下字符串:

[
   {"id":"1","company_name":"company a"},       
   {"id":"2","company_name":"company b"}
]

编辑:我认为我的JSON数据源格式化字符串的方式存在一些问题,因为我这里没有任何root。拥有根元素是否重要?

这是我的Ext JS代码:

<script type="text/javascript">
Ext.onReady(function() {

  Ext.QuickTips.init();

    var ds = new Ext.data.Store({
        proxy: new Ext.data.ScriptTagProxy({
            url: 'http://somesite.com/someFile.php'
        }),
        reader: new Ext.data.JsonReader({}, 
        [
            {name: 'id', mapping: 'id'},
            {name: 'company_name', mapping: 'company_name'},
        ]
        )
    });


    var search = new Ext.form.ComboBox({
        store        : ds,
        fieldLabel   : 'Query string',
        displayField : 'company_name',
        typeAhead    : true,
        loadingText  : 'Searching...',
        pageSize     : 5,
        renderTo     : Ext.getBody(),
        width        : 200,
        mode: 'remote'
    });

});  

但不幸的是,我无法让它发挥作用。 :(请帮忙!

我是JavaScript的n00b。

1 个答案:

答案 0 :(得分:2)

是的,你需要一个root。请参阅JsonReader的文档,'root'配置选项是必需

另外:如果您没有对数据进行跨域提取,则可能不应该使用ScriptTagProxy。 ScriptTagProxy要求服务器在函数调用中包装json编码的数据。如果您只是回调同一台服务器,请改用HttpProxy。