0

我目前正在学习煎茶触摸,作为测试我写了一个小网络服务,我想在列表中显示结果项目

但我无法让它工作......

Ext.define('GS.view.ListTest', {
    extend: 'Ext.navigation.View',

    requires:[
        'Ext.dataview.List',
        'Ext.data.proxy.JsonP',
        'Ext.data.Store'
    ],
    xtype:'listpanel',
    config: {
        title: 'Fifa List',
        iconCls: 'star',

        items: {
            xtype: 'list',
            itemTpl: '{Player1}',

            store: {
                autoLoad: true,
                fields: ['MatchID','Player1', 'ScorePlayer1' ,'ScorePlayer2','Player2'],

                proxy: {
                    type: 'jsonp',
                    url: 'http://fifa.verhulstrobin.be/webservices/getMatches.php',
                    reader: {
                        type:'json',
                        rootProperty: 'matches'
                    }
                }
            }

        }

    }
});

我检查了一下,我的 json 是有效的......它在控制台中说的是 Uncaught SyntaxError: Unexpected token :

4

3 回答 3

0

尝试这样的事情:

    items: {
        xtype: 'list',
        itemTpl: '{match.Player1}',

        store: {
            autoLoad: true,
            fields: ['match'],

            proxy: {
                type: 'jsonp',
                url: 'http://fifa.verhulstrobin.be/webservices/getMatches.php',
                reader: {
                    type:'json',
                    rootProperty: 'matches'
                }
            }
        }
    }

希望这可以帮助

于 2012-07-11T11:28:27.557 回答
0

试试这个

items: {
    xtype: 'list',
    itemTpl: '{match.Player1}',

    store:new  Ext.create('Ext.data.Store', {
        autoLoad: true,
        fields: ['match'],

        proxy: {
            type: 'jsonp',
            url: 'http://fifa.verhulstrobin.be/webservices/getMatches.php',
            reader: {
                type:'json',
                rootProperty: 'matches'
            }
        })
    }
}
于 2012-07-11T12:21:53.117 回答
0

查看您的网络服务响应,我注意到它没有将 JSON 答案包装在 JSONP 所需的函数调用中。您需要返回这样的项目:

Ext.data.JsonP.callback1({});

其中函数的参数必须是您的实际 JSON 数据而不是空对象,并且函数的名称“Ext.data.JsonP.callback1”作为名为“callback”的参数由 Ext Store 传递给您的 Web 服务。

但是,您可以使用代理上的 callbackKey 自定义该参数的名称:

var store = Ext.create('Ext.data.Store', {
    model: 'User',
    proxy: {
        type: 'jsonp',
        url : 'http://domainB.com/users',
        callbackKey: 'theCallbackFunction'  // <--
    }
});

有关 JSONP 以及如何为 Ext Js 商店实现它的更多详细信息,您可以参考http://en.wikipedia.org/wiki/JSONPhttp://docs.sencha.com/touch/2-0/ #!/api/Ext.data.proxy.JsonP

于 2012-07-11T22:27:25.623 回答