首先,感谢本网站的所有专家。你们都让我经历了很多!
我遇到了一个我无法弄清楚的问题。在之前版本的Android(pre-Lollipop)中,我能够通过Cordova应用程序对我的服务器进行jsonp调用。从5.0+开始,我收到ReadyState:0错误。真正奇怪的是(至少对我而言)是代码在调试版本中运行得很好,但在发布版本中没有。这是javascript / jquery:
var url = "https://mydomain.com/mobile/login.php?username=" + $('#username').val() + "&password=" + $('#password').val();
if ($('#username').val() != '' && $('#password').val() != '') {
$.ajax({
type: "GET",
url: url,
cache: false,
dataType: 'jsonp',
beforeSend: function(){
$('#progressbar').fadeIn();
$('#progressbar').progressbar({value: false});
},
success: function(data){
if (!data.session){
$('#incorrect_login').fadeIn();
$('#progressbar').fadeOut();
} else {
localStorage.setItem("sessionId", data.session);
window.open("basepage.html", "_self");
}
}
});
}
服务器返回(如果用户名/密码正确):
echo $_GET['callback'] . "({'session': " . json_encode($sessionName) . "})";
Cordova权限:
<access origin="https://mydomain.com*" subdomains="true" />
AndroidManifest.xml:
<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permissions.NETWORK_ACCESS" />
我已按照here(以及其他)中的步骤进行操作:
我使用的是Cordova 4.1.2,Cordova Android 3.6.4和JQuery 1.10.2。
谢谢!