我有一个在后台使用PhoneGap的奥多比PHP应用程序。在网络发生变化(如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才有。我在苹果iPhone 6上进行了测试,没有任何问题。我还将我的getProducts函数更改为onreadystatechange类型。它现在不会锁定应用程序,但它不会加载php结果,直到我打开/重新打开页面6次。XMLHttpRequest.readyState属性返回1,但从不返回2、3或4(直到返回6次之后)。
发布于 2017-07-19 21:57:49
我在另外两个wifi网络上进行了测试,但无法复制这个问题。可能是防火墙问题?或者PHP文件/服务器在wifi网络上的事实。
https://stackoverflow.com/questions/45171282
复制相似问题