我通过观看此视频创建了我的第一个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。