loginService.islogged()
Die obige Funktion gibt eine Zeichenfolge wie "fehlgeschlagen" zurück. Wenn ich jedoch versuche, die Funktion auszuführen, wird der Fehler von zurückgegeben
TypeError: Cannot read property 'then' of undefined
und der Cursor wird direkt nach connected
und vor angezeigt .then
.
Unten ist die volle Funktion:
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');
});
AKTUALISIEREN
Hier ist die islogged()
Funktion
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;
});
}
Ich bin sicher, dass $checkSessionServer
dies zu einer "fehlgeschlagenen" Zeichenfolge führen wird. Nichts mehr.
javascript
angularjs
promise
Ezeewei
quelle
quelle
promise
hier.msg
- das sollte ein Versprechen zurückgeben.undefined
, dannislogged()
ist eigentlichreturn
kein Wert. Die Definition vonislogged()
wäre wahrscheinlich die Quelle Ihrer Probleme.Antworten:
Sie müssen Ihr Versprechen an die aufrufende Funktion zurücksenden.
quelle
return $http.post
. Sobald ich das Präfix hinzugefügtreturn
habe$http
, hat es richtig funktioniert.return
.TypeError: Beim Aufrufen eines Django-Dienstes mit AngularJS kann die Eigenschaft 'then' von undefined nicht gelesen werden.
Wenn Sie einen Python-Dienst aufrufen, sieht der Code wie folgt aus:
Wir verwenden MongoDB als Datenbank (ich weiß, dass es keine Rolle spielt. Aber wenn jemand mit MongoDB + Python (Django) + AngularJS sucht, sollte das Ergebnis kommen.
quelle