Salut,

Je dois dire que ces formations par vidéos sont vraiment intéressantes, je voudrais donc d'abord vous remercier.
Je découvre AngularJS depuis peu, je n'ai également pas beaucoup d'expérience en javascript, mais un peu plus en PHP.

J'ai un soucis avec $http.get, voici mon code :

function SessionFactory($http, $q) {
    var factory = {
        data : false,
        getData : function() {
            var deferred = $q.defer();
            $http.get('http://127.0.0.1/Projets/CAFA/web/app_dev.php/backoffice/session/user.json')
                    .success(function(data, status) {
                        deferred.resolve(data);
            }) 
                    .error(function(data, status) {
                        deferred.reject('Impossible de charger le fichier.');
            });
            return deferred.promise;
        },
        getTab : function() {
            return factory.data;
        }
    };
    return factory;
}
function MainCtrl(SessionFactory) {
    this.userData = SessionFactory.getData().then(function(data) {
            this.userData = data;
        }, function (status) {
            console.log(status);
        });
    this.username = this.userData;
    this.helloText = 'Welcome in SeedProject';
    this.descriptionText = 'It is an application skeleton for a typical AngularJS web app. You can use it to quickly bootstrap your angular webapp projects and dev environment for these projects.';
};
angular
    .module('inspinia')
    .factory('SessionFactory', SessionFactory)
    .controller('MainCtrl ', MainCtrl)

Si je créé un json à la main directement dans la factory, j'accède aux données.
Mais via la fonction $http.get, je n'y arrive pas. J'ai vérifié via l'examinateur, le fichier est bien chargé.
Tout ce que je reçois c'est "{}", comme mon json était vide, alors qu'il ne l'est pas. Il devrait normalement contenir {"username":"monpseudo"}.
J'ai fait pas mal de tests, j'ai beau essayé je n'y arrive pas.

Je crois que c'est du à mon manque d'expérience en Javascript, quelqu'un saurait m'aider ?

Merci d'avance,

Morgiver

4 réponses


Morgiver
Auteur
Réponse acceptée

Bon, je crois que j'ai réglé le problème tout seul.

Voyant dans l'application de départ (une application d'exemple trouvée sur le net) le Main Controlleur utilisait this pour afficher ses variables. Apparemment il fallait absolument le scope pour utiliser la factory.

Bonjour all,

J'utilise ce post car le titre correspond parfaitement.

J'essaye de récupérer le contenu d'un fichier json en local. Voici mon code :

$http.get("js/data/HistoireData.json")
                    .success(function(data, status) {
                        factory.hs = data;
                        $timeout(function() {
                            deferred.resolve(factory.hs);
                        }, 1500);

                    })
                    .error(function(data, status) {
                        factory.hs = data;
                        deferred.reject('Impossible de récupérer les données ' + status);
                    });

Le soucis c'est que ça marche via un navigateur web PC (Firefox, Google Chrome) même si ça m'affiche un message de ce style :
" L'utilisation d'XMLHttpRequest de façon synchrone sur le fil d'exécution principal est obsolète à cause de son impact négatif sur la navigation de l'utilisateur final. Consulter http://xhr.spec.whatwg.org/ pour plus d'informations. "

MAIS, Le problème c'est que ça marche pas quand je teste l'application sur mon téléphone Android (ça passe à error avec le status 0).

La question est simple : Pourquoi :'( ? Et comment je corrige ça ?

Merci d'avance :)

Très bonne journée.

Bonsoir.

J'utilise ce post car le titre correspond parfaitement.

Si tu veux t'attendre à avoir une/des réponse(s) rapide(s), je te recommande de créer un sujet dans le forum lié à ton problème, c'est à dire : Les questions - langages » Javascript, car ce forum là, n'a aucun rapport avec des quelconques problèmes de langages/frameworks.

Bonjour :)

Ok Merci je déplace !