错误JSONP商店

时间:2012-04-26 17:59:48

标签: jsonp sencha-touch-2

我正在通过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格式有效。

谢谢。

4 个答案:

答案 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
  1. 因此,您需要确保定义了有效的回调函数。

  2. 否则,你可以做一件事。将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"
     }
 ]
 })