Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用json初始化ExtJS存储失败_Javascript_Json_Rest_Extjs_Extjs4 - Fatal编程技术网

Javascript 使用json初始化ExtJS存储失败

Javascript 使用json初始化ExtJS存储失败,javascript,json,rest,extjs,extjs4,Javascript,Json,Rest,Extjs,Extjs4,我有一家这样的商店: Ext.define('app.store.System', { extend : 'Ext.data.Store', model : 'app.model.System', autoLoad: true, autoSync: true, proxy: { type: 'rest', format: 'json', url: '/application/appinfo', method : "GET", reader: {

我有一家这样的商店:

Ext.define('app.store.System', {
extend : 'Ext.data.Store',
model : 'app.model.System',
autoLoad: true,
autoSync: true,

proxy: {
    type: 'rest',
    format: 'json',
    url: '/application/appinfo',
    method : "GET",
    reader: {
        type: 'json',
        root: 'System'
    },
    writer: {
        root: 'System',
        allowSingle: false
    }
}
});
我有一个服务端点来处理与此方法匹配的请求/应用程序:

@GET
@Path("/{sysinfo}")
public List<SystemInfo> getSystemInfo() {        
    if(sysinfo == null){
        sysinfo = new SystemInfo();

        ...initialize
    }

    List<SystemInfo> resultList = new ArrayList<SystemInfo>();
    resultList.add(sysinfo);

    return resultList;
}
这似乎是正确的,但当我尝试在视图的init方法中从存储中读取数据时:

var store = Ext.StoreManager.lookup('System');
    var data = [];

    store.each(function(record) {
        data.push(record.getData());
        console.log("record data: ");
        console.log(record.getData());
    });

    console.log(data[0]);
它说,它是未定义的,好像商店是空的。我用调试器进行了尝试,发现getSystemInfo()在视图的initcomponent之后被调用,但不幸的是,我不知道这是为什么,也不知道如何解决它。有什么想法吗


谢谢您的时间。

您是否尝试过先加载您的商店

var store = Ext.StoreManager.lookup('System');
var data = [];
store.load({
   callback: function(storeVar, records, successful) {
      Ext.each(records, function(record) {
         data.push(record.getData());
         console.log("record data: ");
         console.log(record.getData());
      });
   }
   console.log(data[0]);
});
boris说的是真的,您需要在返回的JSON中定义根属性

如果您使用的是chrome或firefox,您还可以检查进行了哪个网络调用,以及它返回了什么(JSON数据…。

尝试以下方法:

return new { success: true, System = resultList};

您的意思是my bean返回的json应该如下所示:{[{“地址”:“…”,“提要”:[“提要1”,“提要2”]}]成功:true,System=resultList}?否。类似于:{success:true,System:[{“地址”:“…”,“提要”:[“提要1”,“提要2”]}}。试一下我的代码的确,您的读者希望系统是您的根数据属性(包含所有对象的数组)。
return new { success: true, System = resultList};