loginService.islogged()
A função acima retorna uma string como "falhou". No entanto, quando tento executar uma função nele, ele retornará um erro de
TypeError: Cannot read property 'then' of undefined
e o cursor é indicado logo depois connected
e antes .then
.
Abaixo está a função completa:
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');
});
ATUALIZAR
Aqui está a islogged()
função
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;
});
}
Tenho certeza de que o $checkSessionServer
resultado será uma string "falhada". Nada mais.
javascript
angularjs
promise
Ezeewei
fonte
fonte
promise
aqui.msg
- isso deve retornar uma promessa.undefined
,islogged()
não é realmentereturn
um valor. A definição deislogged()
provavelmente seria a origem de seus problemas.Respostas:
Você precisa retornar sua promessa à função de chamada.
fonte
return $http.post
. Assim que adicionei o prefixoreturn
a$http
, ele começou a funcionar corretamente.return
também.TypeError: Não é possível ler a propriedade 'then' de undefined ao chamar um serviço Django usando AngularJS.
Se você estiver chamando um serviço Python, o código ficará assim:
Estamos usando MongoDB como banco de dados (eu sei que não importa. Mas se alguém estiver pesquisando com MongoDB + Python (Django) + AngularJS, o resultado deve vir.
fonte