loginService.islogged()
Powyższa funkcja zwraca ciąg znaków typu „failed”. Jednak gdy spróbuję uruchomić na nim funkcję, zwróci błąd
TypeError: Cannot read property 'then' of undefined
a kursor wskazuje tuż po connected
i przed .then
.
Poniżej znajduje się pełna funkcja:
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');
});
AKTUALIZACJA
Oto islogged()
funkcja
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;
});
}
Jestem pewien, że $checkSessionServer
spowoduje to „nieudany” ciąg. Nic więcej.
javascript
angularjs
promise
Ezeewei
źródło
źródło
promise
tutaj.msg
- to powinno zwrócić obietnicę.undefined
, to wislogged()
rzeczywistości niereturn
jest wartością. Definicjaislogged()
prawdopodobnie byłaby źródłem twoich problemów.Odpowiedzi:
Musisz zwrócić swoją obietnicę funkcji wywołującej.
źródło
return $http.post
. Jak tylko dodałem prefiksreturn
do$http
, zaczął działać poprawnie.return
.TypeError: Nie można odczytać właściwości „then” wartości undefined podczas wywoływania usługi Django przy użyciu AngularJS.
Jeśli dzwonisz do usługi Pythona, kod będzie wyglądał jak poniżej:
Używamy MongoDB jako bazy danych (wiem, że to nie ma znaczenia. Ale jeśli ktoś szuka w MongoDB + Python (Django) + AngularJS) wynik powinien przyjść.
źródło