web-dev-qa-db-ja.com

TypeError:未定義のプロパティ「then」を読み取れません

loginService.islogged() 

上記の関数は "failed"のような文字列を返します。しかし、私はそれを実行しようとすると、それはのエラーが返されます

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が "失敗した"文字列になることは間違いありません。これ以上何もない。

83
Ezeewei

約束を呼び出し元の関数に返す必要があります。

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
}
111
TheSharpieOne

TypeError:AngularJSを使ってDjangoサービスを呼び出すときにundefinedのプロパティ「then」を読み込めません。

Pythonサービスを呼び出している場合、コードは以下のようになります。

this.updateTalentSupplier=function(supplierObj){
  var promise = $http({
    method: 'POST',
      url: bbConfig.BWS+'updateTalentSupplier/',
      data:supplierObj,
      withCredentials: false,
      contentType:'application/json',
      dataType:'json'
    });
    return promise; //Promise is returned 
}

私たちはデータベースとしてMongoDBを使用しています(私はそれが問題ではないことを知っています。だれかがMongoDB + Python(Django)+ AngularJSで検索しているならば結果は来るはずです)。

0
Haris Np