J'y travaille depuis deux jours et j'ai examiné beaucoup d'autres suggestions. Oui, je peux obtenir cette simple requête ajax pour travailler à partir d'une application phonegap, à la fois sur l'émulateur Android et sur un téléphone Android réel.
Ma version de Phonegap est (en utilisant phonegap -v) 3.0.0-0.14.3
Le code que j'utilise est:
var url = 'http://www.thomas-bayer.com/sqlrest/CUSTOMER';
return $.ajax({
type: "GET",
url: url,
timeout: 60 * 1000
}).done(function (data) {
alert('hey');
}).fail(function (a, b, c) {
console.log(b + '|' + c);
});
Le résultat que je reçois dans le journal est juste:
erreur | au fichier: ///Android_asset/www/js/index.js: 62
J'ai ajouté les paramètres au fichier AndroidManifest.xml
<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />
<uses-permission Android:name="Android.permission.READ_PHONE_STATE" />
et j'ai les éléments suivants dans Config.xml
<param name="Android-package" value="org.Apache.cordova.core.NetworkManager" />
Lorsque je vérifie navigator.connection.type
, je reçois 3G
sur l'émulateur et wifi
sur le téléphone physique.
Une idée de quoi d'autre pourrait aller mal?
UPDATE: Si je consigne le JSON dans le premier paramètre de la fonction défaillante, je reçois:
{"readyState":4,"status":404,"statusText":"error"}
Vous devriez liste blanche le domaine pour que vos appels AJAX fonctionnent.
Ajouter cette ligne au fichier de configuration -:
<access Origin="*" />
La politique par défaut de Phonegap bloque tout accès au réseau, sauf indication contraire. La ligne ci-dessus désactivera cette restriction de sécurité. Vous pouvez également être plus précis en n'autorisant que certains domaines à contourner cette fonctionnalité de sécurité en incluant le nom de domaine dans le fichier de configuration, comme
<access Origin="http://yourdomain" />
en plus de la liste blanche, assurez-vous que l'indicateur cors est vrai pour permettre le partage de ressources croisé d'origine.
$.support.cors=true;
veuillez trouver la référence ici
J'avais une URL d'hôte local lorsque j'utilisais Visual Studio . J'ai résolu le problème en modifiant le fichier Applicationhost.config des projets VS et en créant une version du protocole de liaison de sorte que ce soit lui: port: pas *: port: localhost, puis en accédant via l'adresse IP. Assurez-vous d’obtenir toutes les références au port.