TypeError : 정의되지 않은 속성 'then'을 읽을 수 없습니다.


100
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"실패한"문자열 이 될 것이라고 확신 합니다. 더 이상은 없습니다.


4
당신은 promise여기 가 없습니다 .
다니엘 A. 화이트

무엇을 호출해야하는지 msg-약속을 반환해야합니다.
다니엘 A. 화이트

오류가 관련되어있는 경우 undefined, 다음 islogged()실제로하지 않는 return값을. 의 정의가 islogged()문제의 원인이 될 수 있습니다.
Jonathan Lonowski는

어떤 경우에는 islogged 메서드가 값을 반환하지 않는 것일 수 있습니다. 그 후 나는 당신이 비동기 메서드로 islogged를 사용하지 않는다는 것을 알았습니다. 그래서 아마도 약속을 전혀 반환하지 않을 것입니다.
Andrej Kaurin 2014-07-16

@Jonathan Lonowski 방금 islogged 함수를 게시했습니다. 더 많은 통찰력을 가져 오기를 바랍니다.
Ezeewei

답변:


133

약속을 호출 함수에 반환해야합니다.

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
}

4
이것이 실제로 제 공장이 약속을 반환하지 않은 이유였습니다. 나는하는 것을 잊었다 return $http.post. 에 접두사 return를 추가하자마자 $http제대로 작동하기 시작했습니다.
Devner

3
@Devner 감사합니다, 나도 통과 return하는 것을 잊었습니다 .
ESR

2

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로 검색하면 결과가 나와야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.