首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用XMLHttpRequest时,网络更改后PhoneGap应用程序冻结/锁定

使用XMLHttpRequest时,网络更改后PhoneGap应用程序冻结/锁定
EN

Stack Overflow用户
提问于 2017-07-18 23:33:21
回答 2查看 259关注 0票数 1

我有一个在后台使用PhoneGap的奥多比PHP应用程序。在网络发生变化(如Wifi -> 4G)后,只要有XMLHttpRequest (或与服务器通信),应用程序就会崩溃。如果我让应用程序“冻结”3分钟,应用程序就会继续正常工作。我正在一部安卓手机上进行测试,使用的是一个内置的.apk。

我已经尝试/正在做的事情。这在我的配置文件中

代码语言:javascript
复制
    <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);
    }

以前有没有其他人遇到过这个问题?

以下是我使用的所有插件

代码语言:javascript
复制
    <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次之后)。

EN

Stack Overflow用户

发布于 2017-07-19 21:57:49

我在另外两个wifi网络上进行了测试,但无法复制这个问题。可能是防火墙问题?或者PHP文件/服务器在wifi网络上的事实。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45171282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档