我正在尝试在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。
答案 0 :(得分:2)
是的,你需要一个root。请参阅JsonReader的文档,'root'配置选项是必需。
另外:如果您没有对数据进行跨域提取,则可能不应该使用ScriptTagProxy。 ScriptTagProxy要求服务器在函数调用中包装json编码的数据。如果您只是回调同一台服务器,请改用HttpProxy。