【问题标题】:ExtJS - Store proxy loading data using Array ReaderExtJS - 使用 Array Reader 存储代理加载数据
【发布时间】:2015-04-22 18:37:52
【问题描述】:

我在将一组数据从外部文件加载到我的商店时遇到问题。

这是包含数据的文件:

/数据/联系人

[
        ["Lisa", "lisa@hotmail.com", "555-222-3333"],
        ["Bart", "bart@hotmail.com", "555-222-3333"],
        ["Homer", "homer@hotmail.com", "555-222-3333"],
        ["Marge", "marge@hotmail.com", "555-222-3333"]
]

这是我的商店:

Ext.define('MyApp.store.Contacts', {
    extend: 'Ext.data.Store',
    autoLoad: true,
    alias: 'store.contacts',
    model: 'MyApp.model.Contact',

    proxy: {
        type: 'ajax',
        reader: {
            type: 'array'
        },
        url: '../data/contacts'
    }
});

这是我的模型:

Ext.define('MyApp.model.Contact', {
    extend: 'Ext.data.Model',
    alias: 'model.contact',

    fields: [
        {name: 'name', mapping: 0},
        {name: 'email', mapping: 1},
        {name: 'phone', mapping: 2},

    ]
});

我收到了这个错误:

[E] Ext.JSON.decode(): You're trying to decode an invalid JSON String: [
    ["Lisa", "lisa@hotmail.com", "555-222-3333"],
    ["Bart", "bart@hotmail.com", "555-222-3333"],
    ["Homer", "homer@hotmail.com", "555-222-3333"],
    ["Marge", "marge@hotmail.com", "555-222-3333"]


]

有人对我做错了什么或我应该做什么有任何建议吗?最好我不想更改数据文件中数组的格式。

【问题讨论】:

  • 你能分享你的模型定义吗
  • 如果您改为使用 Ext.data.ArrayStore 并删除阅读器配置,会有所不同吗?
  • 这是产生该错误的确切示例代码吗?如果是,是否有 BOM 标记?这可能是问题所在。
  • 感谢你们的帮助。这个错误是由我的一个愚蠢的错误引起的。

标签: extjs proxy store


【解决方案1】:

好吧,我意识到我做错了什么。这是我犯的一个非常愚蠢的用户错误。

在我的数据文件:/data/contacts 中,我真正拥有的是:

[
    ["Lisa", "lisa@hotmail.com", "555-222-3333"],
    ["Bart", "bart@hotmail.com", "555-222-3333"],
    ["Homer", "homer@hotmail.com", "555-222-3333"],
    ["Marge", "marge@hotmail.com", "555-222-3333"]

]


// [
//     {name: 'Lisa', email: 'lisa@simpsons.com', phone: '555-222-1212'},
//     {name: 'Bart', email: 'bart@simpsons.com', phone: '555-333-2212'},
//     {name: 'Homer', email: 'homer@simpsons.com', phone: '555-122-1212'},
//     {name: 'Marge', email: 'marge@simpsons.com', phone: '555-123-1212'}
// ]

我之前正在测试我的 JSON 格式的其他选项,我愚蠢地认为我可以将注释 //'s 放在普通文件中。

从文件中删除 cmets 将修复错误。此文件中定义的数组现在可以加载到存储中。

【讨论】:

    【解决方案2】:

    错误消息说接收到的 JSON 无效。您可以通过http://jsonlint.com在线查看有效性。如果无效,首先要修复。

    然后,我多年来第一次看到 ajax 代理和数组读取器与 Ext 的组合,我不确定它是否支持。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-22
      • 1970-01-01
      • 2013-08-25
      • 2015-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多