我通过观看此视频创建了我的第一个 Sencha touch 2 应用程序 (http://youtu.be/5F7Gx0-W-M4 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。当您为手机构建应用程序时,不能使用此APIproxy
set to ajax
。基本上,您不能使用您域之外的任何资源。就像您的网站位于yourdomain.com并且有someotherdomain.com,那么你就不能对此发出ajax请求someotherdomain.com from yourdomain.com除非该域允许您这样做。在这种情况下,您的移动应用程序没有任何域。您只是在 webview 中加载一个页面。
原因是ajax将无法加载跨域资源。应用程序构建可以在浏览器上运行,因为我相信您正在使用 chrome--disable-web-security
旗帜。要使用 CORS,您需要使用 JsonP 代理。如果您要打包移动应用程序,这是唯一的方法。如果在某种情况下,您拥有服务器(但不在本上下文中),那么您可以通过设置适当的标头来允许 CORS,例如
Access-Control-Allow-Origin: *
or
Access-Control-Allow-Origin: http://yourdomain.com/resource
尝试将代理设置为 JsonP 。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)