使用extjs 3.4 panel + dataview + jsonstore检索数据

时间:2012-12-03 12:24:56

标签: php extjs

我试图通过数据视图显示一些数据,但由于某种原因,我得到一个空文本消息(没有数据)。 这是我的数据视图:

xtype        : 'dataview',
emptyText    : 'No data',
id           : 'cartdata',
multiSelect  : true,
plugins      : new Ext.DataView.DragSelector( { dragSafe : true } ),
store        : new Ext.data.JsonStore({
    url           : '/aecms/user-photos-view/',
    autoLoad      : true,
    root          : 'data',
    fields        : [
    'images'
    ],
    listeners : {
        scope : this,
        load  : function(store) {
            var data = store.reader.jsonData;
            if (data.systemMessage) {
                infoReport(data.systemMessage.title, data.systemMessage.message, data.systemMessage.icon);
            }
        } 
    } 
}),
tpl          : new Ext.XTemplate(
    '<tpl for=".">',
    '<tpl for="images">',
    '<a title="{id}">test</a>',
    '</tpl>',
    '</tpl>'
    )

这是来自php的数据:

{"data":{"images":{"id":"2"}},"status":"success"}

我是extjs的新手,感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

从外观上看,您没有正确返回successProperty值。更改您的PHP代码的响应,如下所示。

商店中JsonReader的默认successProperty是“成功”。 ExtJs将在您的服务器响应中查找此属性。

http://docs.sencha.com/ext-js/3-4/#!/api/Ext.data.JsonReader-cfg-successProperty

此外,您可能希望将数据作为json数组返回,而不是对象。你不需要数据数组中的图像对象。

服务器响应:

{ "data":[{"id":"2"}], "success":true }

使用Javascript:

    ...
store        : new Ext.data.JsonStore({
    url           : '/aecms/user-photos-view/',
    autoLoad      : true,
    root          : 'data',
    fields        : [
    'id'
    ],
    listeners : {
        scope : this,
        load  : function(store) {
            var data = store.reader.jsonData;
            if (data.systemMessage) {
                infoReport(data.systemMessage.title, data.systemMessage.message, data.systemMessage.icon);
            }
        } 
    } 
})
tpl: new Ext.XTemplate(
    '<tpl for=".">',
    '<a title="{id}">test</a>',
    '</tpl>'
)