2016-07-07 46 views
5

Ho creato l'app ionica, sto eseguendo l'app nel browser funziona perfettamente. ma la stessa app che ho provato a eseguire su dispositivi mobili, la chiamata AJAX non funziona. Prima che l'ajax abbia fatto attenzione, è popolato. Di seguito è il mio codice.Ajax La chiamata non funziona sul dispositivo mobile utilizzando IONIC

Codice è,

$http({ 
     method: 'POST', 
     //url: syncURL, 
     url:"http://45.xx.xxx:8080/MobileSync/SummaTest/update_SummaNoun", 
     data: surveyResultrecords,//surveyResultrecords 
     }).then(function(result){ 
          console.log("yay---" +JSON.stringify(result.data)); 
          alert("yay"); 
          alert("APTAM"); 
              //$scope.SummaNoun.id = surveyResultrecords.id; 
              //var promise1 = imageUpload(); 
              //console.log("PUSH completed "); 
              //alert("test---finished"); 
              return "data Updated";//imageUpload(); 

         }).then(function(ress){ 
           console.log("PUSH completed "); 
           alert("push completed") 
         }); 

Questi sono i plugin Cordova ho installato,

"cordovaPlugins": [ 
    "cordova-plugin-camera", 
    "cordova-plugin-device", 
    "cordova-plugin-console", 
    "cordova-plugin-splashscreen", 
    "cordova-plugin-statusbar", 
    "ionic-plugin-keyboard", 
    "cordova-plugin-whitelist", 
    "cordova-plugin-file", 
    "cordova-plugin-file-transfer" 
    ] 

Config.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<widget id="com.ionicframework.Testcamera10008" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> 
    <name>testCamera</name> 
    <description> 
     An Ionic Framework and Cordova project. 
    </description> 
    <author email="[email protected]" href="http://example.com.com/"> 
     Your Name Here 
    </author> 
    <content src="index.html"/> 
    <preference name="webviewbounce" value="false"/> 
    <preference name="UIWebViewBounce" value="false"/> 
    <preference name="DisallowOverscroll" value="true"/> 
    <preference name="SplashScreenDelay" value="2000"/> 
    <preference name="FadeSplashScreenDuration" value="2000"/> 
    <preference name="android-minSdkVersion" value="16"/> 
    <preference name="BackupWebStorage" value="none"/> 
    <preference name="SplashScreen" value="screen"/> 
    <feature name="StatusBar"> 
    <param name="ios-package" value="CDVStatusBar" onload="true"/> 
    </feature> 
    <platform name="android"> 
    <allow-intent href="market:*"/> 
    <allow-intent href="*"/> 
    <allow-navigation href="*"/> 
    <access origin="*"/> 
    <icon src="resources/android/icon/drawable-ldpi-icon.png" density="ldpi"/> 
    <icon src="resources/android/icon/drawable-mdpi-icon.png" density="mdpi"/> 
    <icon src="resources/android/icon/drawable-hdpi-icon.png" density="hdpi"/> 
    <icon src="resources/android/icon/drawable-xhdpi-icon.png" density="xhdpi"/> 
    <icon src="resources/android/icon/drawable-xxhdpi-icon.png" density="xxhdpi"/> 
    <icon src="resources/android/icon/drawable-xxxhdpi-icon.png" density="xxxhdpi"/> 
    <splash src="resources/android/splash/drawable-land-ldpi-screen.png" density="land-ldpi"/> 
    <splash src="resources/android/splash/drawable-land-mdpi-screen.png" density="land-mdpi"/> 
    <splash src="resources/android/splash/drawable-land-hdpi-screen.png" density="land-hdpi"/> 
    <splash src="resources/android/splash/drawable-land-xhdpi-screen.png" density="land-xhdpi"/> 
    <splash src="resources/android/splash/drawable-land-xxhdpi-screen.png" density="land-xxhdpi"/> 
    <splash src="resources/android/splash/drawable-land-xxxhdpi-screen.png" density="land-xxxhdpi"/> 
    <splash src="resources/android/splash/drawable-port-ldpi-screen.png" density="port-ldpi"/> 
    <splash src="resources/android/splash/drawable-port-mdpi-screen.png" density="port-mdpi"/> 
    <splash src="resources/android/splash/drawable-port-hdpi-screen.png" density="port-hdpi"/> 
    <splash src="resources/android/splash/drawable-port-xhdpi-screen.png" density="port-xhdpi"/> 
    <splash src="resources/android/splash/drawable-port-xxhdpi-screen.png" density="port-xxhdpi"/> 
    <splash src="resources/android/splash/drawable-port-xxxhdpi-screen.png" density="port-xxxhdpi"/> 
    </platform> 
</widget> 

index.html

0.123.
<!DOCTYPE html> 
<html lang="en" > 
<head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width"> 
    <meta http-equiv="Content-Security-Policy"> 
    <title>Testcamera</title> 

    <link href="lib/ionic/css/ionic.css" rel="stylesheet"> 

    <script src="lib/ionic/js/ionic.bundle.js"></script><script src="lib/ngCordova/dist/ng-cordova.min.js"></script> 
    <script src="cordova.js"></script> 
    <script src="app/js/app.js"></script> 
    <script src="lib/jquery/jquery-2.1.3.min.js"></script> 
    <script src="lib/ionic-datepicker/dist/ionic-datepicker.bundle.min.js"></script> 
    <script src="app/js/controllers/AplicationLevelCtrl.js"></script> 
    <script src="app/js/controllers/SummaTest.js"></script> 
    <script src="app/js/controllers/SummaNoun_Default_Activity.js"></script> 

<body ng-app="Testcamera"> 
    <ion-nav-view></ion-nav-view> 
</html> 

Chrome inspecter Immagine Chrome Inspecter for that ajax call worked in Browser for your reference

Ho installato il plugin cordova-whitelist anche il mio Cordova versione 6.2.0, 1.7.16 ionica.

+0

Si sta utilizzando il server live Ionic? Potrebbe trattarsi di un problema CORS, dovresti esaminarlo. Utilizza anche l'ispettore chrome nella scheda di rete per verificare se la tua richiesta ha alcune intestazioni di risposta. –

+0

abilitato il CORS nel nostro servizio anche io non sto accedendo al server live ionico. posso mostrare il mio config.xml è che ti aiuta a trovare il problema bro – SakthiSureshAnand

+0

Puoi modificare la tua domanda aggiungendo qualcosa che trovi rilevante. Quali sono i tuoi tag '' e '' nel file config.xml? –

risposta

0

Perché non si dispone di dichiarazione plug-in nel vostro config.xml, ad esempio:

<plugin name="cordova-plugin-whitelist" spec="~1.2.2" /> 

E non avete questo tag:

<access origin="*" subdomains="true" /> 

read here per maggiori informazioni a questo proposito

Inoltre, questo post potrebbe aiutarti. Buona fortuna

+0

Abbiamo provato anche sopra ma la sua non funziona . Se si conosce un altro modo per superare tali problemi, – SakthiSureshAnand

+0

è stato modificato il file config.xml e aggiunta la dichiarazione dei plug-in? Perché questa configurazione funziona per me. –

0

Prima di tutto, non è necessario il numero then in più nel codice poiché non restituisce la promessa. È solo una stringa letterale. Gestisci sempre l'errore come parte di una promessa.

versione migliore:

$http.post(url, data) 
    .then(function (res){ // handles response 
    console.log(res.data); // or execute success function 
    }, function (err){ // handles error 
    console.log(err); // or JSON.stringify(err) if it shows [object] on the console 
    }); 

assicurarsi che tutti i plugin ci sono su platforms/(android/ios) corsa sul dispositivo.

Successivamente, fare ionic run android/ios --lc e vedere i log degli errori sulla riga di comando per vedere cosa è andato storto.

0

Questo potrebbe essere un problema con l'elenco in bianco. Questo è il motivo per cui la chiamata AJAX potrebbe funzionare correttamente nel browser e non nei dispositivi. Devi usare l'attributo allow-intent con le impostazioni corrette per i protocolli HTTP e HTTPS in config.xml per evitare questo problema.

suggerisco di controllare questo SO Post che ha le impostazioni desiderate per superare questo problema

0

Grazie per tutti i ragazzi tipo di risposta, abbiamo trovato il problema seguita @Italo Ayres suo commento debug dispositivi Android Remote. abbiamo visto il log della nostra app e corretto l'errore.

Perché abbiamo provato Android Studio a vedere i registri ma non ha mostrato che Ajax lo chiamava solo prima dei registri delle chiamate AJAX.

Abbiamo fatto riferimento a questo link per visualizzare i registri mobili utilizzando Chrome. Per favore dare un'occhiata in esso. È molto utile. Remote Debugging Android Devices

Problemi correlati