JQuery mobile + Phonegap : les appels Ajax ne fonctionne pas sur Émulateur Android
J'ai une application web mobile, construit en utilisant les versions suivantes :-
- JQuery Mobile : Alpha 4 v1.0a4.1
- JQuery: v1.6.1
- PhoneGap : v0.9.5
À l'aide de phonegap, cette application est intégrée dans une application android native et de déploiement.
Dans mon application, je fais des différents appels AJAX à l'aide de $.ajax vers des sites web externes.
Pour cela j'utilise dataType: 'jsonp' afin de faire le cross de domaine appelant.
Lorsque je testais mon application en Chrome v12.0.742.100, tout fonctionnait bien, et j'ai pas eu de problèmes avec la récupération des données à partir de ces sites externes. Cependant, dès que j'ai packagé dans une .apk fichier et essayez d'exécuter ce dans l'émulateur, je trouve qu'aucun des appels ajax sont de travail.
J'ai mis des alertes avant et après l'appel ajax et vérifié que les deux alertes sont appelés, mais l'appel ajax est aussi bon que ignorés. J'ai l'exploitation forestière dans le succès de rappel et l'erreur de rappel et de ne pas être atteint. J'ai également vérifié en mettant un point d'arrêt sur le serveur externe site web (pour mes tests, je suis juste en ayant un site web sur ma machine locale elle-même) et le serveur de la page n'est certainement pas d'être appelé.
Dans le logcat, l'erreur que je vois c'est ceci :
D/SntpClient( 59): le temps de la demande a échoué: java.net.Exception socketexception: Adresse famille n'est pas pris en charge par le protocole
Je suis assez nouveau à phonegap ainsi que Jquery Mobile, mais aussi loin que ma compréhension va, mon app phonegap le fichier est référencé par file:/// protocole alors que mon URL AJAX est http://127.0.0.1:someport/someapp/somepage et le message d'erreur semble indiquer que ces deux ne se mélangent pas!! Si c'est effectivement le cas, comment puis-je faire des appels ajax à partir d'un phonegap application déployée?
N'hésitez pas à signaler tout ce qui peut être utile! Je suis assez perplexe sur ce point.
Edit : j'ai vérifié le AndroidManifest.xml fichier et toutes les autorisations en vertu de cette phonegap lien wiki sont définies dans ce fichier.
Edit 2 : Ajout de mon côté client code intitiates de l'appel ajax
var serverUrl = "http://localhost:2424/MyServer/RetrieveMasterData.aspx";
$.ajax({
url: serverUrl,
type: 'POST',
dataType: 'jsonp',
data: { MasterDataID: 1 },
success: function(response) {
...... business logic here
},
error: function(xhr, ajaxOptions, thrownError) {
...... error handling something here
}
});
Je n'ai aucune idée de pourquoi ça fonctionne sur google chrome mais pas sur ur android. Mais 1 chose que je sais pour sûr, c'est que de la même origine que la politique ne s'applique pas aux file:/// protocole.
Pouvez-vous poster un extrait de code qui montre le problème.
Mise à jour de la question avec un fragment de code d'un des appels ajax
Je suis confronté au même problème sur Android 2.2, mais dans Android 2.3, il fonctionne très bien.
OriginalL'auteur Jagmag | 2011-06-29
Vous devez vous connecter pour publier un commentaire.
Émulateur Android ne reconnaît pas "localhost"...il devrait être 10.0.2.2 à la place.
essayez de changer l'url de
http://10.0.2.2:2424/MyServer/RetrieveMasterData.aspx
OriginalL'auteur sriharsha451
Parce que la demande n'est pas dans le même domaine, et j'ai résolu le problème en ajoutant
jqm config
que:Et c'est un lien: http://jquerymobile.com/demos/1.0/docs/pages/phonegap.html
OriginalL'auteur Kidd Y