0

フィードをリストとして表示しようとしています。リーダータイプをjsonにしてこれを試してみると、うまくいきます。ただし、タイプがxmlの場合、機能しません。例外があります:

リソースはスクリプトとして解釈されますが、MIME タイプ text/xml で転送されます: "http://feeds.feedburner.com/TechCrunch/?_dc=1345109660600&page=1&start=0&limit=25&callback=Ext.data.JsonP.callback1".* *Uncaught 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 からデータをロードするのを防ぎます。これを回避するには、ロードするデータの URL を含む src 属性を使用して DOM に -Tag を追加します。

しかしその後、この新しいスクリプト タグの開始と終了の間にデータ (この場合は 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 ドキュメントで引数を検索してください。本当に役に立ちます。

クレジット: http://www.alaafu.com/rssreader-sencha/#favorites/first

于 2012-12-17T14:14:12.487 に答える