如何配置extjs阅读器来阅读这个json?

Gih*_*ita 2 json jsonp extjs extjs4

我已配置extjs store来加载来自useragentstring.com api的数据,这个api返回这样的数据

{"agent_type":"Browser","agent_name":"Opera","agent_version":"9.70","os_type":"Linux","os_name":"Linux","os_versionName":"","os_versionNumber":"","os_producer":"","os_producerURL":"","linux_distibution":"Null","agent_language":"English - United States","agent_languageTag":"en-us"}

Ext.define('Oms.model.Userinfo', {
    extend  : 'Ext.data.Model',
    fields  : ['agent_type', 'agent_name', 'agent_version', 'os_type', 'os_name']
});

Ext.define('Oms.store.Userinfo', {
    extend      : 'Ext.data.Store',
    model       : 'Oms.model.Userinfo',
    proxy: {
        type    : 'jsonp',
        reader  : {
            type: 'json',
            root: ''
        }       
    }
});
Run Code Online (Sandbox Code Playgroud)

这个商店抛出一个错误

在此输入图像描述

也许这是因为这个json中没有root?

任何想法如何正确读取此输出和加载存储?

问候

Krz*_*tof 5

当我没有设置root或设置时,它适用于我undefined.

您也可以扩展Ext.data.reader.Json以调整对您需求的响应.例:

Ext.define('Ext.data.reader.JsonPWithoutRoot', {
    extend: 'Ext.data.reader.Json',
    read: function(response) {
        return this.callParent([ { root: response } ]);
    },
    root: 'root'
});
Run Code Online (Sandbox Code Playgroud)

然后在代理中定义它像这样:

proxy: {
    type: 'jsonp',
    callbackKey: 'method',
    url: 'http://localhost/ext4/data3.php',
    reader: Ext.create('Ext.data.reader.JsonPWithoutRoot', {})
}
Run Code Online (Sandbox Code Playgroud)