我在将外部文件中的数据数组加载到商店时遇到问题。
这是包含数据的文件:
/数据/触点
[
["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"]
]
有没有人对我做错了什么,或者我应该怎么做?我最好不要在数据文件中更改数组的格式。
答案 0 :(得分:2)
好的,我意识到我做错了什么。这是我犯的一个非常愚蠢的用户错误。
在我的数据文件中:/ 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格式的其他选项,而且我觉得我可以将注释放在普通文件中,这太傻了。
从文件中删除注释将修复错误。现在可以将此文件中定义的数组加载到商店中。
答案 1 :(得分:1)
错误消息表明收到的JSON无效。您可以在http://jsonlint.com在线查看有效性。如果它无效,那么首先要修复它。
然后,我多年来第一次看到ajax代理和数组阅读器的组合,我和我不确定它是否受支持。