列表没有填充JsonP代理

时间:2012-04-15 04:05:04

标签: javascript list proxy extjs sencha-touch-2

我想要一个导航视图。我正在尝试使用JsonP代理填充Sencha Touch中的列表。

以下是我迄今为止尝试过的示例代码段:

var view = Ext.define('MyApp.view.NavigateView', {
    extend: 'Ext.navigation.View',
    xtype:'navigateview',

    config : {
        fullscreen:true,
        styleHtmlContent:true,
        scrollable:true,

        items : [
            {
                title:'Navigation',
                items : [
                    {
                        xtype:'list',
                        store: {
                            fields : ['title','author'],
                            proxy : {
                                type:'jsonp',
                                url:'https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=http://feeds.feedburner.com/SenchaBlog',
                                    reader: {
                                         type: 'json',
                                         rootProperty: 'responseData.feed.entries'
                                    }
                            },
                            autoLoad:true,
                        },
                        itemTpl:'<div class="contact">{title} <strong>{author}</strong></div>',
                        listeners : {
                            itemtap : function(){
                                Ext.Msg.alert('Called');
                                }
                            }
                        }
                ],

            }
        ]   
   }
});

但问题是,我的名单没有填充。列表中没有显示任何项目。

另外,我经常在控制台上收到此错误。

  

XMLHttpRequest无法加载   http://api.tinyhippos.com/xhr_proxy?tinyhippos_apikey=ABC&tinyhippos_rurl=list.php%3F_dc%3D1334462633038%26page%3D1%26start%3D0%26limit%3D25。   Access-Control-Allow-Origin不允许原点http://localhost

有人请指导吗?我在这里缺少什么?

2 个答案:

答案 0 :(得分:2)

我在跨域使用AJAX请求时遇到了同样的错误。 看看here

您必须确保使用jsonp正确配置服务器部分

作为第一步,确定在浏览器中禁用Web安全性时应用程序是否可以正常运行

找到您的chrome安装目录 然后输入您的cmd:chrome --disable-web-security

答案 1 :(得分:0)

您的Ext.navigation.View对象包含一个包含您的列表的Ext.Component对象(xtype未定义为默认为'component')。如果您将列表直接作为视图的项目,则会显示:

var view = Ext.define('MyApp.view.NavigateView', {
  extend: 'Ext.navigation.View',
  xtype: 'navigateview',

  config : {
    fullscreen: true,
    styleHtmlContent: true,
    scrollable: true,

    items : [{
      title: 'Navigation',
      xtype: 'list',
      store: {
        fields: ['title','author'],
        proxy: {
          type: 'jsonp',
          url: 'https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=http://feeds.feedburner.com/SenchaBlog',
          reader: {
            type: 'json',
            rootProperty: 'responseData.feed.entries'
          }
        },
        autoLoad:true
      },
      itemTpl: '<div class="contact">{title} <strong>{author}</strong></div>'
    }]
  }
});

注意1:不确定为什么你的代码无效。

注意2:您提到的错误与您的代码段无关