用jsonp加载内容

时间:2012-08-23 16:55:10

标签: ajax jsonp sencha-touch-2

我是sencha touch2的初学者。我正在尝试创建一个包含博客视图的应用程序。博客的代码如下。当我启动应用程序时,内容无法加载,给出这些错误。我正在使用wamp for localhost。

XMLHttpRequest cannot load "  http://secureclick-media-maynemyltf.netdna-ssl.com/Extensions/rjs/c2.js".  Origin< http://localhost> is not allowed by Access-Control-Allow-Origin.

XMLHttpRequest cannot load  " http://api.yontoo.com/GetClientData.ashx?key=null&id=47a8564d-d089-4195-9564-72f107ea1c56&loc=http%3A//localhost/GS/&apps=bestvideodownloader,ezLooker,pagerage,buzzdock,toprelatedtopics,twittube".  Origin <http://localhost> is not allowed by Access-Control-Allow-Origin.
  

Ext.define('GS.view.blog',
{
        extend:'Ext.navigation.View',
    xtype: 'blogpanel',

    config:{
        title: 'Blog',
        iconCls: 'star',

        items:
        {
            xtype:'list',
            itemTpl:'{title}',
            store:
            {   
                autoLoad: true,
                fields:['title','author','content'],

                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',
                }
                }
            }
        }
    }
});

1 个答案:

答案 0 :(得分:1)

您不是在调用JSONP服务而是调用JSON服务。您可以通过从浏览器调用your URL来检测它,并看到内容不是通过方法调用启动的。

所以你没有绕过跨域保护。

你不能只告诉你希望它在JSONP中回答的服务器:它必须准备好做出这样的答案。

并且您的浏览器不允许您从另一个域访问服务器在json中回答而没有设置标头指定他接受此跨域请求。阅读this

编辑:

您可以使用JSONP调用此服务:您只需在URL的末尾指定回调即可。

  

除了这种响应格式,协议还支持a   通过指定a触发的经典JSON-P样式回调   callback参数,它指示API将JSON对象作为传递   指定回调的参数。

来自the documentation的示例:

'https://ajax.googleapis.com/ajax/services/feed/find?v=1.0&q=Official%20Google%20Blogs&callback=processResults'