【问题标题】:Sencha touch get json errorSencha touch 获取 json 错误
【发布时间】:2012-07-17 18:59:54
【问题描述】:

每次我尝试使用 sencha touch 获取 json 提要时,我总是会收到此错误。

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.

我怎样才能解决这个问题,我真的很想使用 sencha,但我的大部分工作都将使用 json 提要???

任何帮助

我的 json 输出看起来像这样它没有 rootproperty 节点??

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

【问题讨论】:

  • 你如何访问 JSON 文件?给我看。

标签: json extjs sencha-touch-2


【解决方案1】:

Sencha 可以读取这样的非 root 响应吗?

[{ “id”:“7253”, “标题”:“你好”, “描述”: ””, “来源”:“叙利亚新闻”, "cat_name": "叙利亚新闻" }, { “id”:“7208”, “标题”:“你好”, “描述”: ””, “来源”:“叙利亚新闻”, "cat_name": "叙利亚新闻" }]

【讨论】:

    【解决方案2】:

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

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

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

    会返回数据

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

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

    在 Sencha Touch 中,更改:

    proxy: 'ajax'
    

    proxy: 'jsonp'
    

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

    如需更多信息,请查看:

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

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2011-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-25
      • 1970-01-01
      • 2012-03-29
      相关资源
      最近更新 更多