在Sencha Touch 2中使用来自服务器的rest代理加载商店数据

时间:2013-01-15 17:33:36

标签: rest proxy load sencha-touch-2 store

我在论坛上搜索并阅读了其他一些帖子。但是,我不确定究竟是怎么回事。我有一个带有代理的商店,我正在尝试从服务器加载数据。我没有运气就尝试了jsonp和rest代理类型。在这两种情况下,我都会收到403禁用错误。后跟XMLHTTPRequest无法加载错误。

以下是我在Chrome控制台中看到的错误:

enter image description here

这是我的代码:

Ext.define('EventsTest.store.Venues', {
    extend: 'Ext.data.Store',


    requires: [
        'Ext.data.proxy.Rest',
    ],


    config: {
        storeId: 'venuesStore',
        model: 'EventsTest.model.Venue',
        proxy: {
            type: 'rest',
            url: 'http://leo.web/pages/api/',
            headers: {
                'x-api-key': 'senchaleotestkey'
            },
            limitParam: false,
            pageParam: false,
            enablePagingParams: false
            /*
            extraParams: {
                latitude: 45.250157,
                longitude: -75.800257,
                radius: 5000
            }
            */
        }
    }
});

2 个答案:

答案 0 :(得分:0)

您正在本地域“sencha.test”上运行您的应用,但您正在尝试访问“leo.web”上的数据 - 错误是您尝试跨域加载数据,这不是不允许通过AJAX。

你说JSONP不起作用......为什么不呢?您的服务器是否返回有效的JSONP?

答案 1 :(得分:0)

浏览器和桌面的安全策略不同,所以即使它在浏览器中失败也可以在手机中工作。但现在的问题是如何在开发应用程序时进行管理,因为看看这个类似的问题:

How to use json proxy to access remote services during development

关于获得403响应的OPTION请求,请尝试设置withCredentials : falseuseDefaultHeader : false。详情

http://docs.sencha.com/touch/2-1/#!/api/Ext.data.Operation-cfg-withCredentials http://docs.sencha.com/touch/2-1/#!/api/Ext.data.Connection-cfg-useDefaultHeader

如果您想使用远程服务,我建议您阅读有关CORS的更多信息,您可以选择在服务器上启用CORS