2012-07-18 54 views
0

每当我尝试使用sencha touch来获得json feed时,我总是会得到这个错误。Sencha touch get json error

XMLHttpRequest cannot load http://api.example.com/index.php/news/all/format/json?_dc=1342630239638&node=root. Request header field X-Requested-With is not allowed by Access-Control-Allow-Headers. 

如何解决围绕工作停止这个我真的想与煎茶工作,但我的大部分工作将JSON源合作???

任何帮助

也是我的JSON输出看起来像这样它没有一个rootproperty节点?

[{ 
    "id": "7253", 
    "title": "hello", 
    "description": "", 
    "source": "syrianews", 
    "cat_name": "Syrianews" 
}, { 
    "id": "7208", 
    "title": "hello", 
    "description": "", 
    "source": "syrianews", 
    "cat_name": "Syrianews" 
}] 
+0

你如何做到访问JSON文件?给我看看。 – hekomobile 2012-07-18 17:01:50

回答

0

看来您正在尝试执行跨域Ajax请求,这是不允许的。 Ajax请求具有相同域,相同端口,相同协议的安全要求。如果您从说http://www.tinyfactory.co/加载您的应用程序,然后尝试向http://api.example.com/发出Ajax请求,则安全沙箱将不允许它。

但有希望。输入JSONP。 JSONP或填充JSON(http://en.wikipedia.org/wiki/JSONP)是一种绕过此安全策略的方法,如果您请求数据的域播放良好。通常,您会在名为“callback”的API上看到一个参数。它所做的是将数据包装在您声明的Javascript函数中。例如:

http://api.example.com/datafeed.json?callback=foo 

将返回数据

foo({fName: 'Alex', lName: 'Rolek'}); 

JSONP能够通过动态地插入脚本代码到DOM设置为您正在使用请求API的“SRC”属性来实现这一目标回调请求var。当API返回响应时,函数'foo'在您的应用程序中被调用,您可以开始使用响应数据。

在煎茶触摸,变化:

proxy: 'ajax' 

proxy: 'jsonp' 

根据您的要求。只要API接受回调,Sencha Touch就会完成其余的繁重工作。

有关更多信息,请查看:

http://docs.sencha.com/touch/2-0/#!/api/Ext.data.proxy.JsonP

希望这有助于。

0

Can Sencha可以读取这种非根响应吗?

[{ “ID”: “7253”, “标题”: “你好”, “说明”: “”, “源”: “syrianews”, “cat_name”: “Syrianews” },{ “ID”: “7208”, “标题”: “你好”, “说明”: “”, “源”: “syrianews”, “cat_name”: “syrianews” }]