Phonegap inter-domaine AJAX Requête POST ne fonctionne pas sur Android
De la croix-domaine AJAX requête POST fonctionne parfaitement bien sur les navigateurs web, y compris les navigateurs web sur les téléphones mobiles, mais ne fonctionne pas pour les applications natives construit à l'aide de Phonegap
J'ai créé un formulaire de connexion que les utilisateurs ont à saisir leurs identifiants de connexion, puis ils sont vérifiés par le serveur est hébergé sur heroku et renvoie du json {"success":true}
si des informations d'identification valides sont entrés.
Mon script Ajax:
$.ajax({
type: "POST",
url: "http://domain.com/public/auth/app-login",
contentType: "application/x-www-form-urlencoded; charset=utf-8",
dataType: "json",
data: {identity: <username from form>, password: <password from form>},
crossDomain: true,
cache: false,
success: function(data) {
obj = JSON.parse(data);
if (obj && obj.success === true) {
window.location.href = 'home.html';
}
},
error: function(e) {
alert('Error: ' + e.message);
}
});
Les mesures prises pour résoudre ce problème:
- Domaine liste blanche - config.xml
<access origin="http://domain.com/public/auth/app-login" />
<access origin="*" />
- Dire jQuery pour permettre à la croix-domaine
$.support.cors = true;
OU
jQuery.support.cors = true;
- Désactiver la mise en cache
cache: false
Toute aide est appréciée.
- Bonjour, Pourriez-vous résoudre ce problème? Pouvez-vous pls partager la solution?
- Oui j'ai fait le résoudre. Essayez la procédure suivante: 1. Domaine liste blanche (docs.phonegap.com/en/2.1.0/...), 2. utilisation XmlHttpReqquest pour communiquer avec votre serveur - voir stackoverflow.com/questions/9464563/...
Vous devez vous connecter pour publier un commentaire.
Ok. Si index.html en local, vous pouvez appeler ajax hôtes, pas besoin d'activer la SCRO dans le client ou le serveur. Vous supprimer:
Et:
Redondant, utiliser seulement:
Vous avez besoin de vérifier et de les ajouter dans AndroidManifest.xml:
Ajouter plus de l'autorisation si votre application a besoin. Enfin, l'appel ajax à l'intérieur de $(document).prêt():
error: undefined
de mon ajax d'erreur de commande. Je ne suis pas pourquoi cette montre.assets
répertoire qui awww
et je vais appeler laindex.html
, de sorte qu'il est local.Si vous êtes à la recherche pour résoudre ce problème, alors vous pourriez souhaitez assurez-vous que le plugin est bien inclus dans le processus de construction.
Vous pouvez également spécifier une version qui est recommandé, et je n'ai pas spécifié ci-dessus. Une bonne façon de tester si le plugin est inclus est utiliser le logiciel gratuit nuage de compte prévue à, https://build.phonegap.com/apps. Si vous construisez votre projet, il vous permet de vérifier l'onglet plugins et assurez-vous que la liste blanche plugin est inclus.
J'ai lu que vous ne devez en avoir besoin dans l'élément HEAD de votre page HTML, mais j'ai trouvé que de la date de ce post que j'ai encore besoin d'inclure le plugin.
Si le plugin n'est pas chargé, vous pouvez obtenir un "Non Trouvé" erreur lors de l'utilisation de la
$.ajax
méthode pour jQuery pour la chaîne d'erreur.Partie de l'information sur Internet vous dira que la liste blanche de l'information est placée dans le
/www/res/
dossier, mais cela semble être des informations obsolètes. Vous pouvez également trouver que<plugin...
est utilisé dans certains exemples, mais il semble que ce peut être obsolète façon?Aussi, vous pourriez avoir besoin:
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
m'a aidé à résoudre le problème.utilisation
au lieu de
data: {identity: <username from form>, password: <password from form>}
J'ai eu message de succès quand j'ai changé mon code comme ceci.
Un certain temps il est question dans votre domaine. Dans mon cas, j'ai résolu en mettant le code suivant dans mon .fichier htaccess