TypeError: Cannot read property 'then' of undefined
angularjs, javascript, promise
Solution
You need to return your promise to the calling function.
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
}
Problem
``` loginService.islogged() ``` Above function return a string like "failed". However, when I try to run then function on it, it will return error of ``` TypeError: Cannot read property 'then' of undefined ``` and the cursor is indicate right after `connected` and before `.then`. Below is the full function: ``` 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'); }); ``` UPDATE Here is the `islogged()` function ``` 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; }); } ``` I am certain that the `$checkSessionServer` will result in a "failed" string. Nothing more.