我正在尝试加载一个JSON数据,该数据由AJAX请求回复给网格。 我的商店定义:
Ext.define('Report.store.CustomerDataStore', {
extend: 'Ext.data.Store',
requires: [
'Report.model.Customer'
],
constructor: function(cfg) {
var me = this;
cfg = cfg || {};
me.callParent([Ext.apply({
autoLoad: false,
storeId: 'CustomerDataStore',
model: 'Report.model.Customer',
proxy: {
type: 'ajax',
url: '',
reader: {
type: 'json',
root: 'data',
record: 'fields'
}
}
}, cfg)]);
}
});
我的应用程序中有一个按钮,其定义如下:
xtype: 'button',
handler: function(button, event) {
var queryform = this.up('form').getForm();
var me = this;
if(queryform.isValid())
{
Ext.Ajax.request({
url: 'customers/', // where you wanna post
success: function(response) {
var mystore = Ext.data.StoreManager.lookup('CustomerDataStore');
var myData = Ext.JSON.decode(response.responseText);
console.log(myData.toSource());
mystore.loadData(myData);
},
jsonData: Ext.JSON.encode(queryform.getValues())
});
}
},
问题是我的网格没有显示回复的数据!我确信我回复的JSON格式没问题。我用json文件检查了它。同时myData.toSource()
返回我想要的JSON格式。
我很困惑我做错了什么?
你能帮忙吗?
答案 0 :(得分:8)
我找到了解决方案,我不得不使用loadRawData()函数而不是loadData()。
答案 1 :(得分:3)
loadData()
加载模型即记录,但不解析内部的JSON数据。您需要在代理阅读器中指定JSON格式,然后存储将在您调用store.load()
时自动执行Ajax调用