Ext Js,Ext.Ajax.request无法在移动设备

时间:2015-11-16 11:05:10

标签: android ajax cordova extjs sencha-touch-2

我正在尝试使用sencha touch 2和phonegap构建应用,我正在使用在线phonegap构建服务,http://build.phonegap.com

我有一个问题,该应用程序在我的计算机上,在所有浏览器上运行得非常好,当我从Chrome浏览器打开它时,它在手机上也能正常工作,我也试过了“Phonegap App Desktop&#” 39;它运行的服务器将应用程序传输到您的移动设备,该应用程序也可以在移动设备上运行。

但是当我构建apk并将其安装在我的手机上时。除了Ajax请求之外,一切正常,这是我的ajax请求的片段。

Ext.Ajax.request({
    url: 'http://192.168.0.200/DVD/store.php',
    timeout:80000,
    callback: function(options, success, response) {
        var home = Ext.getCmp('home');
        home.setHtml(response.responseText);
    }
});

我是被摧毁的原因'我之前可以发誓它,所以我创建了一个新的开箱即用的应用程序并创建了一个按钮,并将上述功能添加到它,但这不起作用。

我正在做的是用sencha sencha app build android构建应用程序 然后我将android dir内容压缩,上传到phonegap构建服务,然后我将其安装到手机上,除了ajax请求外,一切正常。

我的计算机上没有安装android SDK所以我必须使用phonegap在线版

我在这里缺少什么?

谢谢

1 个答案:

答案 0 :(得分:1)

如果您使用的是Cordova 5.x,则需要检查您的内容安全策略是否已在index.html的头部正确设置。你需要一个connect-src子句,允许连接到http://192.168.0.200

所以,请使用以下内容:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; connect-src http://192.168.0.200">

这应该允许Android设备访问您的服务器,假设Android设备位于192.168.0.200解析到您的服务器的网络上。

如果您将来将应用程序移植到iOS,您还需要配置Apple的App Transport Security以允许对所有非SSL服务器进行通配符访问,或者配置例外以允许iOS 9设备进行http连接到192.168.0.200。可以在here找到一篇博文,向您介绍整个过程。