Jam*_*ber 2 javascript jquery android cordova
我已经加载了文档中所需的所有内容以启用互联网连接,但收到的所有和任何互联网请求都带有404返回码.
我知道我想要覆盖的文件可跨域评估.见到这里:http://jsfiddle.net/hutber/VN864/

我在我的应用程序中运行相同的代码,并在404警报中返回点击.
为了测试我的连接,我正在运行:
var networkState = navigator.connection.type;
var states = {};
if(typeof Connection!=="undefined"){
states[Connection.UNKNOWN] = 'Unknown connection';
states[Connection.ETHERNET] = 'Ethernet connection';
states[Connection.WIFI] = 'WiFi connection';
states[Connection.CELL_2G] = 'Cell 2G connection';
states[Connection.CELL_3G] = 'Cell 3G connection';
states[Connection.CELL_4G] = 'Cell 4G connection';
states[Connection.CELL] = 'Cell generic connection';
states[Connection.NONE] = 'No network connection';
alert('Connection type: ' + states[networkState]);
Run Code Online (Sandbox Code Playgroud)
这将按预期返回连接.目前WiFi connection
config.xml中
<access origin="*" />
<feature name="NetworkStatus">
<param name="android-package" value="org.apache.cordova.NetworkManager" />
</feature>
Run Code Online (Sandbox Code Playgroud)
AndriodManiest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
Run Code Online (Sandbox Code Playgroud)
JS用来调用所谓的http请求
$.ajax({
url: 'http://stage.sexdiaries.co.uk/app/users/login',
type: 'post',
data: {
'uname': values.uname,
'pword': values.pword
},
crossDomain: true,
error: function(data){
c(data.status);
},
success: function(data){
c('success: '+data);
data = JSON.parse(data);
if(data.privateKey){
$.jStorage.set('uid',data.ud.uid); //store user ID in the localStorage to persist
sessionStorage.setItem('privateKey',data.privateKey); //store privateKey in session so it disapears when the user closers the tab
Backbone.history.loadUrl('');
}
}
});
Run Code Online (Sandbox Code Playgroud)
所以我知道连接是活跃的.我真的有联系吗?我疯了吗?我该如何获得此http请求?
添加了iFrame的信息
<iframe width="560" height="315" src="http://stage.sexdiaries.co.uk" frameborder="0" allowfullscreen></iframe>
Run Code Online (Sandbox Code Playgroud)
这会出现以下错误:
所以要100%确保我可以访问互联网我已经添加了一个应该100%工作的iframe.
我今晚也遇到了这个问题(请参阅我对原始问题的评论),但我很高兴地报告我发现了这个问题.
事实证明,它与Cordova for Android 4.0.0中的更新有关.来自Changlelog:
- 白名单功能现在通过插件提供(CB-7747)白名单已经增强,更加安全和可配置框架现在支持Content-Security-Policy的设置(请参阅插件自述文件中的详细信息)您将需要添加新的cordova-plugin-whitelist插件传统的白名单行为仍然可以通过插件获得(虽然不推荐).
所以解决这个问题的方法是安装插件:
ionic plugin add https://github.com/apache/cordova-plugin-whitelist.git
Run Code Online (Sandbox Code Playgroud)
之后,您可以配置可以导航到哪个主机,出于测试目的,您可以将其设置为:
<allow-navigation href="*" />
Run Code Online (Sandbox Code Playgroud)
这也解释了iframe测试的失败.我在我的项目中验证了这个修复程序,现在一切正常.
祝好运
| 归档时间: |
|
| 查看次数: |
1590 次 |
| 最近记录: |