0

希望有人可以提供帮助..我已经搜索了几个小时试图找到解决方案..

我正在尝试在商店中使用 ajax 代理填充列表。如果我将 json 数据内联,它可以完美运行,但我似乎无法从代理返回任何数据,即使 url 在浏览器中返回完全相同的 json 数据。我究竟做错了什么???

店铺:

Ext.define('m3.store.News', {  
extend: 'Ext.data.Store',  

requires: ['m3.model.News'],  

config: {  
    model: 'm3.model.News',  
    autoload: true,  
    proxy: {  
        type: 'ajax',  
        url: 'http://localhost/lib',  
        reader: {  
            type: 'json'  
        }  
    }  
});  

如果我内联添加数据,它会完美运行:

Ext.define('m3.store.News', {  
extend: 'Ext.data.Store',  

requires: ['m3.model.News'],  

config: {  
    model: 'm3.model.News',  
    autoload: true,  
    proxy: {  
        type: 'ajax',  
        url: 'http://localhost/lib',  
        reader: {  
            type: 'json'  
        }  
    },  
data: [{"title":"Test Title 1","id":"1","text":"<div>Test Text 1<\/div>"},{"title":"Test Title 2","id":"2","text":"<div>Test Text 2<\/div>"}]  
});

其他一切正常,所以我不会发布其他文件,如果您可能需要它们,请告诉我。

我什至尝试过静态 json 文件,但似乎没有从代理返回。

有没有办法在控制台中测试代理的响应?我试过“Ext.getStore('News');” 但它返回一个空数组。

使用 Sencha Touch 2 MVC。

它看起来很简单,但我就是无法让它工作.. 非常感谢提前!

4

1 回答 1

0

我认为您在这里缺少的是rootProperty加载data通过Ajax代理的同时。

您需要提及此属性以识别 json 的根。

reader : {
   type:'json',
   rootProperty:'data'
}

并且您的 json 数据应采用如下格式(根应为“数据”)

{
    "data": [
        {
            "title": "Test Title 1",
            "id": "1",
            "text": "<div>Test Text 1</div>"
        },
        {
            "title": "Test Title 2",
            "id": "2",
            "text": "<div>Test Text 2</div>"
        }
    ]
}

我认为,它现在应该适用于这些更改。

于 2012-04-28T03:19:25.553 回答