如何从远程加载的商店获取服务器数据

时间:2010-02-25 15:41:35

标签: extjs

我正在使用GroupingStore将数据加载到网格中,数据从服务器加载并通过JSON读取器读取。这是相关的代码

var reader = new Ext.data.JsonReader({
    successProperty: 'success',
    idProperty: 'id',
    root: 'data',
    messageProperty: 'message'  
}, [
    {name: 'id'},
    {name: 'creator'},
    {name: 'first_name', allowBlank: false},
    {name: 'last_name', allowBlank: false}
]);

var store = new Ext.data.GroupingStore({
    id: 'person',
    proxy: proxy,
    reader: reader,
    groupField:'creator',
    sortInfo:{field: 'first_name', direction: "ASC"}
});

它被正确地加载到网格中,但是有了这些数据,我想发送一些更多的数据,这些数据不会被网格化,但会节省我的服务器之旅。 那么无论如何我可以访问从服务器返回的原始数据吗?

我尝试在加载中使用回调

store.load({'callback':loadCallback})

但loadCallback中的数据只是记录列表而不是原始数据。

修改:一个例子 从服务器i返回{'form_items':[],'data':[]},数据节点用作商店的根,包含网格行,我想访问form_items或实际上是服务器返回到的原始数据存储。

2 个答案:

答案 0 :(得分:3)

通过直接访问store.reader.jsonData

,我找到了一种在加载回调中执行此操作的方法

e.g。

store.load({'callback':function(a,b,c){
   console.log(store.reader.jsonData)
 }});

答案 1 :(得分:2)

听起来您希望在商店加载完成后访问服务器的原始响应。试试这个(未经测试的)代码。

store.proxy.on('onread', function(a, o, response) {
  var data = Ext.util.JSON.encode(response.responseText);
  console.dir(data.form_items);
}