Sencha Touch 2.1原生(安卓)应用程序无法从远程获取json(它在PC上工作)



我通过观看此视频创建了我的第一个Sencha touch 2应用程序(http://youtu.be/5F7Gx0-W-M4)它有一个商店页面,结构如下:

Ext.define('FirstApp.store.Places',{
    extend:'Ext.data.Store',
    config:{
        autoLoad:true,
        model:'FirstApp.model.Place',
        proxy:{
            type:'ajax',
            url:'https://maps.googleapis.com/maps/api/place/search/json?location=-33.8670522,151.1957362&radius=500&types=food&name=harbour&sensor=false&key=AIzaSyCFWZSKDslql5GZR0OJlVcgoQJP1UKgZ5U',
            reader:{
                type:'json',
                rootProperty:'results'
            }
        }
    }
})

后构建(在运行"sencha app build native"之后)包在我的MAC(所有浏览器)上运行得很好,但生成的应用程序(我在我的nexus手机上运行它)可以工作,但不会从谷歌地图json中收集任何数据。如有任何帮助,将不胜感激

您所指的示例是使用谷歌地图的位置搜索API。在为proxy设置为ajax的手机构建应用程序时,不能使用此API。基本上,你不能使用任何在你的领域之外的资源。例如,如果您的网站位于yourdomain.com,并且有someotherdomain.com则除非该域允许,否则您无法从ourdomain.com向该someotherdomain.com/strong>发出ajax请求。在这种情况下,您的移动应用程序没有任何域。您只是在Web视图中加载一个页面。

原因是ajax将无法加载跨源资源。应用程序构建适用于浏览器,因为我相信您使用的是带有--disable-web-security标志的chrome。要使用CORS,您需要使用JsonP代理。如果你正在为移动应用程序打包,这是唯一的方法。如果在某种情况下,你拥有服务器(但不是在这种情况下),那么你可以通过设置适当的标题(如)来允许CORS

Access-Control-Allow-Origin: *

Access-Control-Allow-Origin: http://yourdomain.com/resource

尝试将代理设置为JsonP。

最新更新