web-dev-qa-db-fra.com

TypeError: Impossible de lire la propriété 'then' of non définie

loginService.islogged() 

La fonction ci-dessus renvoie une chaîne du type "en échec" . Cependant, lorsque j'essaie de l'exécuter, cette fonction renvoie une erreur de

TypeError: Cannot read property 'then' of undefined

et le curseur est indiqué juste après connected et avant .then.

Ci-dessous, la fonction complète:

var connected=loginService.islogged();
alert(connected);
connected.then(function(msg){
    alert("connected value is "+connected);
    alert("msg.data value is "+msg.data);
    if(!msg.data.account_session || loginService.islogged()=="failed")       
        $location.path('/login');
});

METTRE À JOUR

Voici la fonction islogged()

islogged:function(){
    var cUid=sessionService.get('uid');
    alert("in loginServce, cuid is "+cUid);
    var $checkSessionServer=$http.post('data/check_session.php?cUid='+cUid);
    $checkSessionServer.then(function(){
        alert("session check returned!");
        console.log("checkSessionServer is "+$checkSessionServer);
        return $checkSessionServer;
    });
}

Je suis certain que le $checkSessionServer entraînera une chaîne "en échec". Rien de plus.

75
Ezeewei

Vous devez retourner votre promesse à la fonction appelante.

islogged:function(){
    var cUid=sessionService.get('uid');
    alert("in loginServce, cuid is "+cUid);
    var $checkSessionServer=$http.post('data/check_session.php?cUid='+cUid);
    $checkSessionServer.then(function(){
        alert("session check returned!");
        console.log("checkSessionServer is "+$checkSessionServer);
    });
    return $checkSessionServer; // <-- return your promise to the calling function
}
106
TheSharpieOne

TypeError: Impossible de lire la propriété 'then' de non définie lors de l'appel d'un service Django à l'aide d'AngularJS. 

Si vous appelez un service Python, le code ressemblera à celui ci-dessous: 

this.updateTalentSupplier=function(supplierObj){
  var promise = $http({
    method: 'POST',
      url: bbConfig.BWS+'updateTalentSupplier/',
      data:supplierObj,
      withCredentials: false,
      contentType:'application/json',
      dataType:'json'
    });
    return promise; //Promise is returned 
}

Nous utilisons MongoDB comme base de données (je sais que ce n'est pas grave. Mais si quelqu'un effectue une recherche avec MongoDB + Python (Django) + AngularJS, le résultat devrait apparaître. 

0
Haris Np