0

我的模型是:

Ext.define('GS.model.user', {
    extend: 'Ext.data.Model',
    fields: [{
        name: 'id',
        type: 'string'
    }, {
        name: 'username',
        type: 'string'
    }, {
        name: 'email',
        type: 'string'
    }]
});

我的商店代码是:

Ext.define('GS.store.userstore', {
    extend: 'Ext.data.Store',
    requires: 'GS.model.user',
    config: {
        model: 'GS.model.user',
        autoLoad: true,
        // data: [],
        proxy: {
            type: 'ajax',
            url: '/app/mydata.json',
            reader: {
                type: 'json',
                root: 'users'
            }
        }
    },
    listeners: {
        load: function(store) {
            alert(store.getCount());
            console.log(store.getAt[0]);
        }
    }
});

查看代码:

Ext.define('GS.view.userlist', {
    extend: 'Ext.form.Panel',
    xtype: 'userpanel',
    requires: ['GS.store.userstore', 'Ext.form.Panel'],

    config: {
        itemTpl: '{store.get("id"),{sotre.get("username")},{store.get("email")}',
        store: 'userstore'
    }
});

json数据:

[{
    "users": [{
        "id": "1001",
        "username": "user1",
        "email": "abc@unisys.com"
    }, {
        "id": "1002",
        "username": "user2",
        "email": "abcd@unisys.com"
    }, {
        "id": "1003",
        "username": "user3",
        "email": "abce@unisys.com"
    }, {
        "id": "1004",
        "username": "user4",
        "email": "abcf@unisys.com"
    }]
}]

在谷歌家务中运行它后,我收到错误:

OPTIONS file:///D:/app/mydata.json?_dc=1334569840508&page=1&start=0&limit=25

资源加载失败。

请告诉我这怎么可能?我如何检索 json 数据值并将其填充为列表。帮我。

4

5 回答 5

2

localhost在 url 中使用来运行你的应用程序

例如:

http://localhost/your_app

于 2012-04-17T08:27:58.997 回答
1

您的 json 数据似乎不正确。

“用户”不应该在引号之间,并且对于所有“id”和“username”和“email”语句同样适用:

json数据:

{
   users:
      [
         { id: "1001", username: "user1" , email:"abc@unisys.com"},
         { id: "1002", username: "user2" , email:"abcd@unisys.com"},
         { id: "1003", username: "user3" , email:"abce@unisys.com"},
         { id: "1004", username: "user4" , email:"abcf@unisys.com"}
      ]
}
于 2012-04-16T11:28:01.127 回答
1

路径错了吗?对我来说,它甚至找不到文件。

proxy: {
        type: 'ajax',
        url : 'app/mydata.json', // CHANGE THIS TO 'app/mydata.json'
        reader: {
            type: 'json',
            root: 'users'
           }} },

我将您的 json 放入 jsonlint.org 并通过了,所以我认为这不是问题。根据错误,我认为您的路径不正确。如果我在上面发布的内容不起作用,我会将 mydata.json 复制到 index.html 所在的根文件夹中,并将代理 url 配置为 url: 'mydata.json',

于 2012-04-16T13:17:59.170 回答
1

您的代码有两个问题:

  1. 您的 JSON 有效,但 JSON 阅读器无法读取它,因为它是一个数组。如果您删除它[]它将起作用:

    {
        "users": [
            {
                "id": "1001",
                "username": "user1",
                "email": "abc@unisys.com"
            },
           ...
        ]
    }
    
  2. 在您的阅读器中,您需要使用rootProperty- not root

    reader: {
        type: 'json',
        rootProperty: 'users'
    }
    
  3. 在您的内部itemTpl,您可以直接使用{fieldName}- 您不需要使用store.get('xxx')

    itemTpl: '{username}, {email}'
    

至于文件没有加载;我不知道。尝试其他浏览器,如果仍然无法正常工作,请再次检查该文件是否确实存在。

于 2012-04-16T21:33:29.950 回答
0

将 json 文件托管在某个位置,应该可以通过 http.ie 访问该文件。将文件放在本地计算机上运行的任何服务器中,并在存储代理的 url 部分中提供 URL。

于 2013-04-08T11:35:48.877 回答