0

我正在尝试将提要显示为列表。当我尝试使用读取器类型为 json 执行此操作时,它工作正常。但是,类型为 xml 时,它不起作用。我得到一个例外:

资源解释为脚本,但使用 MIME 类型 text/xml 传输:“http://feeds.feedburner.com/TechCrunch/?_dc=1345109660600&page=1&start=0&limit=25&callback=Ext.data.JsonP.callback1”。* *未捕获的 SyntaxError : 意外的令牌 <

Ext.define('TestViews.view.RSSFeedView', {
    requires:[
        'TestViews.view.CommonTitleBar',
        'TestViews.view.CommonContainer',
        'TestViews.locale.MsgResource'
    ],
    extend: 'Ext.Panel',
    xtype: 'Test-rssfeedview',
    id:'rssFeedView',
    config: {
        fullscreen: true,
        layout: {
            type: 'vbox'
        },
        autoDestroy: true,
        items: [
            {
                xtype: 'Test-commontitlebar',
                title: 'RSS Feed Component'
            },
            {
                xtype: 'list',
                id: 'rssFeedList',
                title : 'RSS Feed View',

                                    itemId:"testList",
                                    onItemDisclosure: true,
                                    itemTpl: '{title}',
                flex: 1,
               store:{
                   model: "TestViews.model.RSSFeedViewModel",
                   autoLoad: true,
                   implicitIncludes: true,
                   proxy: {
                       type: 'jsonp',
                        url: 'http://feeds.feedburner.com/TechCrunch/',                          
                       reader: {
                           type: 'xml',
                           root: 'channel',
                            record: 'channel'
                           }
                       }
               },
                width: '100%',                    
                autoDestroy: true,
            }
        ]
    }
})

模型:

enter Ext.define('TestViews.model.RSSFeedViewModel', {
extend: 'Ext.data.Model',

config: {
    fields: [
        'title','description'
    ]
}});

你能告诉我我在这里做错了什么吗?

4

1 回答 1

0

我认为您不能将 XML 读取为 JSONP。看看 JSONP 是如何工作的:

同源策略可防止任何浏览器从不同的 URL 加载数据。要解决此问题,您可以使用 src 向 DOM 添加 -Tag 属性包含您要加载的数据的 URL。

但在那之后,您在这个新脚本标记的开始和结束之间拥有数据(在您的情况下为 RSS 提要数据)。浏览器开始将其解释为 JavaScript 并且 - 砰!Unexpected token < ... 这是正确的,因为它不是 JavaScript,而是 RSS。

总结:JSONP 只能用于从另一个 URL 加载 JavaScript!

解决方案:您可以将 RSS 数据包装为 JSON 中的字符串。Google API 在这里可以帮助您:

http://ajax.googleapis.com/ajax/services/feed/load?q=URL&v=1.0&num=10&output=json-in-script

这为您提供了一个 JSON 对象,其中包含转换后的提要数据。在 API Docs 中搜索参数,真正帮助你。

学分:http ://www.alaafu.com/rssreader-sencha/#favorites/first

于 2012-12-17T14:14:12.487 回答