0

我对这个项目的目标是加载由 Web 服务器上的脚本输出的 Json,以便我可以在 Sencha Touch 2 的列表中显示数据。

我查看了无数示例,包括该网站上其他人问题的答案,但我似乎仍然无法弄清楚我的代码有什么问题。我确定这是非常小的事情,或者可能是我不知道的一些规则,但我希望有人能指出我正确的方向。

这是我的模型:

Ext.define('Sencha.model.Location', {
    extend: 'Ext.data.Model',
    config: {
        fields: ['name','location','open','details']
    }
});

这是我的商店:

Ext.define('Sencha.store.Locations',{
    extend: 'Ext.data.Store',
    requires:[
        'Sencha.model.Location',
    ],
    config: {
        model: 'Sencha.model.Location',
        storeId: 'Locations',
        proxy: {
      type: 'ajax',
      url : 'http://url/to/locations.php?filetype=.json',
      reader: {
        type: 'json',
      },
      autoLoad: 'true'
    }
    }
});

这是我希望它显示的视图:

Ext.define('Sencha.view.LocationList',{
    extend: 'Ext.List',
    alias: 'widget.LocationList',
    xtype: 'locationlist',
    config: {
        title: 'What\'s Open @CU',
        disableSelection: true,
        itemTpl: '<img src="http://localhost/{open}.png" style="width:16px;height:16px;margin-right:8px;" />{name}<span style="font-size:9pt;margin-left:8px;color:#888;">{location}</span>',
        store: 'Locations',
        onItemDisclosure: true
    }
});

这是输出的 JSON(可能是格式问题导致它静默失败?)

{
"businesses":
    {
    "name" : "Baker's"
    "location" : "4th Floor Uni Centre"
    "open" : "open"
    "details" : "This is some information."
    }
}
4

3 回答 3

1

您的 JSON 无效。你忘记了逗号:

{
"businesses":
    {
    "name" : "Baker's",
    "location" : "4th Foor Uni Centre",
    "open" : "open",
    "details" : "This is some information."
    }
}

此外,如果您打算发送多个业务,则可能需要将 JSON 格式更改为如下所示:

{
"businesses":[
    {
    "name" : "Baker's",
    "location" : "4th Foor Uni Centre",
    "open" : "open",
    "details" : "This is some information."
    },
    {
    "name" : "Baker's",
    "location" : "4th Foor Uni Centre",
    "open" : "open",
    "details" : "This is some information."
    }
    ...
]
}

然后rootProperty: 'businesses'像 nuthan 说的那样添加到你是代理的读者。

希望这可以帮助

于 2012-12-04T15:29:47.157 回答
1

添加 rootProperty:'businesses'reader: { type: 'json', rootProperty:'businesses' }您的商店中。

于 2012-12-04T05:12:34.060 回答
0

http://url/to/locations.php 

与您的煎茶触摸应用程序相同的位置?如果没有,则需要 JsonP 代理。JsonP 将 Json 数据包装到类似上下文的函数中以使其可用。

于 2012-12-04T10:07:13.313 回答