我正在通过JSONP检索List的信息,并在控制台浏览器中收到以下错误:“意外令牌:”
我的商店:
Ext.define ('Projeto.store.Mural', {
extend 'Ext.data.Store'
requires: [
'Projeto.model.Mural'
]
config: {
autoLoad: true,
model: 'Projeto.model.Mural'
storeId 'MuralStore'
Proxy {
type: 'jsonp'
url: 'http://URL/mural'
reader: {
type: 'json',
rootProperty: 'rows'
}
}
}
});
我的清单:
Ext.define ('Projeto.view.MuralList', {
extend 'Ext.dataview.List'
alias: 'widget.murallist'
config: {
loadingText: 'Loading ...',
store: 'MuralStore'
itemTpl: [
'<div> Message: {message} </ div>
]
}
});
JSON返回我的网址:
{
"rows": [
{
"lookup": "yyyy"
"dateTime", "10/10/1970"
"id": "1",
"message": "yyyy"
}
{
"lookup": "dsdfasfsadf"
"dateTime", "15/05/2012"
"id": "2",
"message": "dsdfasfsadf"
}
]
}
有没有人知道错误的原因,因为JSON格式有效。
谢谢。
答案 0 :(得分:0)
你错过了中间的逗号:
{
"rows": [
{
"lookup": "yyyy"
"dateTime", "10/10/1970"
"id": "1",
"message": "yyyy"
},
{
"lookup": "dsdfasfsadf"
"dateTime", "15/05/2012"
"id": "2",
"message": "dsdfasfsadf"
}
]
}
答案 1 :(得分:0)
我的猜测是您正在访问的服务返回JSON但不是 JSONP。在jsonp标记中搜索“意外令牌”。你会发现例如Why is this JSONP feed throwing "Unexpected Token" error?
答案 2 :(得分:0)
首先,你在很多地方都错过了':'
,并且在陈述结束时也错过了','
。在属性值之前使用:
并在语句末尾使用,
始终是一种好习惯。
像这样,
...
...
requires: [
'Projeto.model.Mural'
],
config: {
autoLoad: true,
model: 'Projeto.model.Mural',
storeId: 'MuralStore',
proxy : {
type:'jsonp',
},
....
....
其次,发生此错误是因为您的响应不是VALID jsonp响应。
当我查看jsonplint.com时,它显示了此错误
Invalid JSONP
No callback function defined
Improper or no closing
因此,您需要确保定义了有效的回调函数。
否则,你可以做一件事。将type:'jsonp'
更改为type:'ajax'
,这样可以解决您的问题,而无需更改任何其他内容。
答案 3 :(得分:0)
由于您要求 jsonp ,而不仅仅是 json ,因此它希望您的json包含在回调函数中。类似的东西:
callback({
"rows": [
{
"lookup": "yyyy"
"dateTime", "10/10/1970"
"id": "1",
"message": "yyyy"
}
{
"lookup": "dsdfasfsadf"
"dateTime", "15/05/2012"
"id": "2",
"message": "dsdfasfsadf"
}
]
})