我有一个在后端使用PHP的Adobe PhoneGap应用。网络更改后(如Wifi - > 4G),只要有XMLHttpRequest
(或与服务器通信),应用程序就会崩溃。如果我让应用程序坐下来"冻结" 3分钟后,应用程序继续正常工作。我在一部安卓手机上进行测试,其中包含一个内置的'的apk。
我尝试过/正在做什么。这是在我的配置文件
中 <plugin name="cordova-plugin-whitelist" source="npm" spec="https://github.com/apache/cordova-plugin-whitelist" />
<allow-intent href="http://*/*" />
<allow-intent href="*://*api.parse.com/*"/>
And here is what my code looks like that is communication with PHP
function getProducts() {
var url = 'http://www.*.com/*/*/getProducts.php';
var params = "ID=1" +
var xhr = new XMLHttpRequest();
xhr.open('GET', url + "?" + params, false);
xhr.addEventListener("readystatechange", processRequest, false);
function processRequest(e) {
if (xhr.readyState == 4 && xhr.status == 200) {
document.getElementById("results").innerHTML = xhr.response;
}
}
xhr.send(params);
}
之前是否有其他人遇到此问题?
这是我正在使用的所有插件
<preference name="android-minSdkVersion" value="14" />
<plugin name="cordova-plugin-console" source="npm" spec="https://github.com/apache/cordova-plugin-console" />
<plugin name="cordova-plugin-device" source="npm" spec="https://github.com/apache/cordova-plugin-device"/>
<plugin name="cordova-plugin-device-orientation" source="npm" spec="https://github.com/apache/cordova-plugin-device-orientation" />
<plugin name="cordova-plugin-dialogs" source="npm" spec="https://github.com/apache/cordova-plugin-dialogs" />
<plugin name="cordova-plugin-geolocation" source="npm" spec="https://github.com/apache/cordova-plugin-geolocation" />
<plugin name="cordova-plugin-globalization" source="npm" spec="https://github.com/apache/cordova-plugin-globalization" />
<plugin name="cordova-plugin-inappbrowser" source="npm" spec="https://github.com/apache/cordova-plugin-inappbrowser" />
<plugin name="cordova-plugin-splashscreen" source="npm" spec="https://github.com/apache/cordova-plugin-splashscreen" />
<plugin name="cordova-plugin-network-information" source="npm" spec="https://github.com/apache/cordova-plugin-network-information" />
<plugin name="cordova-plugin-statusbar" source="npm" spec="https://github.com/apache/cordova-plugin-statusbar" />
<plugin name="cordova-plugin-whitelist" source="npm" spec="https://github.com/apache/cordova-plugin-whitelist" />
编辑:看起来我的应用程序没有进入函数processRequest
Edit2:看来这个bug只是android。我在Apple iPhone 6上测试过它并没有问题。我还将getProducts
函数更改为onreadystatechange
类型。它现在没有锁定应用程序,但它没有加载PHP结果,直到我打开/重新打开页面6次。 XMLHttpRequest.readyState
属性返回1,但不会返回2,3或4(直到6次之后)。
答案 0 :(得分:0)
尝试重新安装network-information
插件。
cordova plugin rm org.apache.cordova.network-information
cordova plugin add https://github.com/apache/cordova-plugin-network-information
可能有所帮助。
P.S。如果navigator.connection.type
已更改,请尝试重新启动所有请求
并且不要忘记,在Cordova 2.3.0 navigator.connection.type
之后更改为navigator.connection
。
答案 1 :(得分:0)
我在另外两个wifi网络上测试了这个,无法复制这个问题。也许防火墙问题?或者PHP文件/服务器在该wifi网络上的事实。