loginService.islogged()
Вышеупомянутая функция возвращает строку типа «сбой». Однако, когда я пытаюсь запустить эту функцию, она вернет ошибку
TypeError: Cannot read property 'then' of undefined
и курсор указывает сразу после connected
и перед .then
.
Ниже представлена полная функция:
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');
});
ОБНОВИТЬ
Вот 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;
});
}
Я уверен, что это $checkSessionServer
приведет к "неудачной" строке. Ничего более.
javascript
angularjs
promise
Ezeewei
источник
источник
promise
здесь нет.msg
- это должно вернуть обещание.undefined
, то наislogged()
самом делеreturn
это не значение. Определениеislogged()
, вероятно, будет источником ваших проблем.Ответы:
Вам нужно вернуть свое обещание вызывающей функции.
источник
return $http.post
. Как только я добавил префиксreturn
к$http
, он начал работать правильно.return
.TypeError: не удается прочитать свойство then of undefined при вызове службы Django с использованием AngularJS.
Если вы вызываете службу Python, код будет выглядеть следующим образом:
Мы используем MongoDB в качестве базы данных (я знаю, что это не имеет значения. Но если кто-то ищет с помощью MongoDB + Python (Django) + AngularJS, результат должен прийти.
источник