Ich habe versucht, eine kleine Test-App, die einen AJAX-Anruf macht. Wenn ich es mit dem PhoneGap Desktop Server und der Android Developer App starte. Alles funktioniert gut. Aber wenn ich PhoneGap Build verwende, um die App zu kompilieren, installiere die .apk auf meinem Handy. Der AJAX-Aufruf schlägt fehl.PhoneGap Build: AJAX funktioniert nicht
Ich habe alles gelesen, um eine Lösung für mein Problem zu finden. Es scheint, dass es auch viele Leute gibt, die dieses Problem haben, aber bisher konnte ich es nicht beheben. Die häufigste Sache, die ich sehe, ist, dass es sich um eine Whitelist handelt. Aber meine config.xml-Datei enthält ...
<plugin name="cordova-plugin-whitelist" source="npm" spec="~1.2.1"/>
sowie ...
<access origin="*"/>
<allow-intent href="http://*/*"/>
<allow-intent href="https://*/*"/>
Und mein CSP sieht wie folgt aus ...
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
die nach Cordova documentation sollte AJAX erlauben.
Meine App ist sehr einfach. Es verfügt über eine Schaltfläche, die meine AJAX-Funktion aufruft und übergibt es einige Informationen an den Server, und eine Rückruffunktion ...
<button onclick="serv('init',ajaxer)">BUTTON</button>
Hier ist meine js Datei zu senden:
function ajaxer(resp){
var e = document.getElementById("test");
e.innerHTML="responded...";
if(resp.go){
e.innerHTML="IT WORKED!";
}else{
e.innerHTML="foo";
}
}
function serv(request,returnFunc,parameters) { //SEND AND RECEIVE ALL SERVER INFO
document.getElementById("test").innerHTML="sending info...";
var query="";
var serverObject;
if(window.XMLHttpRequest){
serverObject = new XMLHttpRequest();
}else{
serverObject = new ActiveXObject("Microsoft.XMLHTTP");
}
serverObject.goto = returnFunc;
serverObject.onreadystatechange = function() {
if(serverObject.readyState==4&&serverObject.status==200){
var serverResponse = JSON.parse(serverObject.responseText);
serverObject.goto(serverResponse);
}
};
if(parameters){
query="&"+parameters;
}
serverObject.open("POST", "http://tylermackenzie.duckdns.org/phoneGap%20Test/server.php", true);
serverObject.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
serverObject.send('qType='+request+query);
}
Wenn ich drücken Die Schaltfläche zeigt den Text "sending info ..." an, schaltet aber niemals auf "requested ..." oder "IT WORKED!" um. oder "foo". was bedeutet, dass ajaxer() nie aufgerufen wurde.
Ich kann nicht verstehen, warum es nicht funktioniert. Wie ich bereits erwähnt habe. Es funktioniert gut, wenn ich die phoneGap Entwickler-App verwende. Und ich habe mein Handy wifi ausgeschaltet, während ich es teste. Ich weiß also, dass sich das Telefon in einem anderen Netzwerk befindet als der Server, weil das Telefon das Mobilfunknetz benutzen muss. Wenn das nur eine Whitelist ist, sollte es nicht dasselbe Problem haben, wenn ich es mit der Entwickler-App teste?
Außerdem weiß ich, dass es kein Problem mit meinem Server ist, weil es gut reagiert, wenn ich in der Entwickler-App teste, und wenn ich manuell dorthin navigiere.
Ich hoffe, jemand kann mir helfen.
ADDITION
es etwas haben könnte mit meiner Dateistruktur zu tun, die ich PhoneGap sind Hochladen zu bauen? Ich habe gerade die "Hallo Welt" Basis-App verwendet, die die PhoneGap Desktop App erstellt. Und editiert die html und js um eine kleine Test App zu erstellen.
Es ist ein wenig verwirrend für mich, denn es gibt eine index.html unter AppName/www sowie AppName/platforms/browser und unter AppName/platforms/browser/www Warum werden alle Dateien verdreifacht? Ich habe versucht, alle drei Kopien zu machen. scheint keinen Unterschied zu machen.
Ich habe irgendwo gelesen, dass ich nur den AppName/www-Ordner zu PhoneGap Build hochladen muss, und es scheint genauso gut zu funktionieren, als alles andere hochzuladen.
@Homen weiße Liste nützlich wäre, ist 1.2.2 und Android 6.0 –
@Homen ah, sorry. Es heißt "Befehl nicht gefunden" Ich nehme an, weil ich das CLI nie richtig installiert habe? Ich brauche es nicht wirklich, wenn ich PhoneGap Build verwende, oder? –
Wir haben kürzlich ein ähnliches Problem. Wenn wir die APK "signieren", erhalten sie keinen Netzwerkzugriff mehr. Wenn wir die APK nicht signieren und alles andere gleich ist, funktioniert die Anwendung. Die gleiche Anwendung funktioniert auch (Netzwerkkonnektivität) auf IOS signiert und unsigniert. Versuchen Sie, Ihre Anwendung auf Phonegap Build OHNE Unterzeichnung zu bauen, um über diese Hürde zu kommen. Ich versuche immer noch, die Ursache herauszufinden. – DaShaun