2017-07-18 45 views
1

我有一個在後端使用PHP的Adobe PhoneGap應用程序。網絡更改後(如WiFi - > 4G),每當有XMLHttpRequest(或與服務器通信)時,應用程序都會崩潰。如果我讓應用程序「凍結」3分鐘,應用程序將繼續正常工作。我正在測試Android手機,並帶有「內置」.apk文件。PhoneGap應用程序在使用XMLHttpRequest進行網絡更改後凍結/鎖定

我試過/正在做什麼。這是在我的配置文件

<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:看來,這個錯誤僅是機器人。我在Apple iPhone 6上測試過,並沒有問題。我也將我的getProducts函數更改爲onreadystatechange類型。它現在不鎖定應用程序,但它不加載PHP結果,直到我打開/重新打開該頁面6次。 XMLHttpRequest.readyState屬性返回1,但不會返回2,3或4(直到6次後)。

回答

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已更改,請嘗試重新啓動所有請求。
不要忘了,科爾多瓦2.3.0之後navigator.connection.type更改爲navigator.connection

+0

感謝您的評論。我重新安裝了網絡信息插件,但沒有任何幫助。我的網頁工作,直到有php/xmlhttp交互。 – Brandon

0

我在另外兩個wifi網絡上測試了這個,並且無法複製這個問題。也許防火牆問題?或者PHP文件/服務器在該網絡上。